2.5 KiB
Datei Input / Output
Genau wie in anderen Sprachen ist es in Groovy möglich, Operationen auf Dateien auszuführen. Aus Zeitgründen gehen wir in der Vorlesungseinheit und damit auch in diesem Skript nur auf die Grundlegenden Operationen ein.
1. Dateien zeilenweise Lesen
Um eine Datei zu lesen, bedient man sich der eachLine()
Methode auf Objekten der Klasse java.io.File
. Diese nimmt ein Closure als Argument und wendet den Ausdruck auf jede Zeile der Datei an. Das ausgeben einer Datei auf der Konsole würde dann wie folgt aussehen:
import java.io.File
new File("./example.txt").eachLine {
line -> println "${line}"
}
2. Lesen einer Datei als Ganzes:
Es ist jedoch genauso möglich eine Datei direkt als Ganzes zu lesen. Hierzu gibt man einfach das .text
Attribut der Klasse File
in das println
-Statement.
File file = new File("./example.txt")
println file.text
3. Schreiben von Dateien:
Um in eine Datei zu schreiben, muss man sich einen Writer
erstellen lassen. Dies macht man mit der withWriter()
-Methode der Klasse File
. Die Methode bekommt dann die entsprechende Zeichenkodierung (z.B. UTF-8) als Argument übergeben:
new File("./example.txt").withWriter('utf-8') {
writer -> writer.writeLine("Hallo Welt!")
}
Um mehrere Zeilen in einem Rutsch in eine Datei zu schreiben würde man wie folgt vorgehen:
def lines = ['Zeile 1', 'Zeile 2', 'Zeile 3']
new File('path/to/file.txt').withWriter { writer ->
lines.each { line ->
writer.writeLine(line)
}
}
4. Größe und Pfad einer Datei ermitteln
Um die Größe und den absoluten Pfad einer Datei zu ermitteln, benutzt man die Methode length()
der File Klasse und das Attribut absolutePath
. Dies würde dann wie folgt aussehen:
File file = new File("./example.txt")
println "Die Datei liegt hier: ${file.absolutePath}"
println "Die Datei hat folgende Größe (in Bytes): ${file.length}"
5. Testen, ob eine Datei ein Verzeichnis ist:
Das Testen, ob eine Datei ein Verzeichnis oder eine herkömmliche Datei ist funktioniert wie folgt:
def file = new File("E:/")
println "Die Datei ist eine normale Datei: ${file.isFile()}" // false
println "Die Datei ist ein Verzeichnis: ${file.isDirectory()}" // true
6. Erstellen eines Verzeichnisses:
Verzeichnisse erstellen kann man mit der file.mkdir()
Methode. Dazu geht man folgendermaßen vor:
def file = new File("E:/Directory")
file.mkdir()