59 lines
2.5 KiB
Markdown
59 lines
2.5 KiB
Markdown
|
# 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:
|
||
|
````Groovy
|
||
|
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.
|
||
|
````Groovy
|
||
|
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:
|
||
|
````Groovy
|
||
|
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:
|
||
|
````Groovy
|
||
|
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:
|
||
|
````Groovy
|
||
|
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:
|
||
|
````Groovy
|
||
|
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:
|
||
|
````Groovy
|
||
|
def file = new File("E:/Directory")
|
||
|
file.mkdir()
|
||
|
````
|