Groovy - plik I / O
Groovy zapewnia wiele pomocniczych metod podczas pracy z we / wy. Groovy zapewnia łatwiejsze klasy, aby zapewnić następujące funkcje dla plików.
- Czytanie plików
- Pisanie do plików
- Przechodzenie po drzewach plików
- Czytanie i zapisywanie obiektów danych do plików
Oprócz tego do operacji we / wy na plikach można zawsze używać normalnych klas Java wymienionych poniżej.
- java.io.File
- java.io.InputStream
- java.io.OutputStream
- java.io.Reader
- java.io.Writer
Czytanie plików
Poniższy przykład wyświetli wszystkie wiersze pliku tekstowego w Groovy. MetodaeachLine jest wbudowany w klasę File w Groovy w celu zapewnienia, że każdy wiersz pliku tekstowego zostanie odczytany.
import java.io.File
class Example {
static void main(String[] args) {
new File("E:/Example.txt").eachLine {
line -> println "line : $line";
}
}
}
Klasa File służy do tworzenia wystąpienia nowego obiektu, który przyjmuje nazwę pliku jako parametr. Następnie przyjmuje funkcję eachLine, umieszcza ją w zmiennej o nazwie line i odpowiednio drukuje.
Jeśli plik zawiera następujące wiersze, zostaną one wydrukowane.
line : Example1
line : Example2
Czytanie zawartości pliku jako całego ciągu
Jeśli chcesz pobrać całą zawartość pliku jako ciąg znaków, możesz użyć właściwości text klasy pliku. Poniższy przykład pokazuje, jak można to zrobić.
class Example {
static void main(String[] args) {
File file = new File("E:/Example.txt")
println file.text
}
}
Jeśli plik zawiera następujące wiersze, zostaną one wydrukowane.
line : Example1
line : Example2
Pisanie do plików
Jeśli chcesz zapisywać w plikach, musisz użyć klasy writer do wyprowadzenia tekstu do pliku. Poniższy przykład pokazuje, jak można to zrobić.
import java.io.File
class Example {
static void main(String[] args) {
new File('E:/','Example.txt').withWriter('utf-8') {
writer -> writer.writeLine 'Hello World'
}
}
}
Jeśli otworzysz plik Example.txt, zobaczysz słowa „Hello World” wydrukowane w pliku.
Pobieranie rozmiaru pliku
Jeśli chcesz uzyskać rozmiar pliku, możesz użyć właściwości length klasy pliku, aby uzyskać rozmiar pliku. Poniższy przykład pokazuje, jak można to zrobić.
class Example {
static void main(String[] args) {
File file = new File("E:/Example.txt")
println "The file ${file.absolutePath} has ${file.length()} bytes"
}
}
Powyższy kod pokaże rozmiar pliku w bajtach.
Testowanie, czy plik jest katalogiem
Jeśli chcesz sprawdzić, czy ścieżka jest plikiem lub katalogiem, możesz użyć rozszerzenia isFile i isDirectoryopcja klasy File. Poniższy przykład pokazuje, jak można to zrobić.
class Example {
static void main(String[] args) {
def file = new File('E:/')
println "File? ${file.isFile()}"
println "Directory? ${file.isDirectory()}"
}
}
Powyższy kod pokaże następujące dane wyjściowe -
File? false
Directory? True
Tworzenie katalogu
Jeśli chcesz utworzyć nowy katalog, możesz użyć rozszerzenia mkdirfunkcja klasy File. Poniższy przykład pokazuje, jak można to zrobić.
class Example {
static void main(String[] args) {
def file = new File('E:/Directory')
file.mkdir()
}
}
Katalog E: \ Directory zostanie utworzony, jeśli nie istnieje.
Usuwanie pliku
Jeśli chcesz usunąć plik, możesz użyć funkcji usuwania klasy File. Poniższy przykład pokazuje, jak można to zrobić.
class Example {
static void main(String[] args) {
def file = new File('E:/Example.txt')
file.delete()
}
}
Plik zostanie usunięty, jeśli istnieje.
Kopiowanie plików
Groovy zapewnia również funkcjonalność kopiowania zawartości z jednego pliku do drugiego. Poniższy przykład pokazuje, jak można to zrobić.
class Example {
static void main(String[] args) {
def src = new File("E:/Example.txt")
def dst = new File("E:/Example1.txt")
dst << src.text
}
}
Plik Przykład1.txt zostanie utworzony i cała zawartość pliku Przykład.txt zostanie skopiowana do tego pliku.
Pobieranie zawartości katalogu
Groovy zapewnia również funkcjonalność listy dysków i plików na dysku.
Poniższy przykład pokazuje, jak dyski na komputerze mogą być wyświetlane przy użyciu listRoots funkcja klasy File.
class Example {
static void main(String[] args) {
def rootFiles = new File("test").listRoots()
rootFiles.each {
file -> println file.absolutePath
}
}
}
Wydajność może się różnić w zależności od dysków dostępnych w komputerze. Na standardowej maszynie wynik byłby podobny do następującego -
C:\
D:\
Poniższy przykład pokazuje, jak wyświetlić listę plików w określonym katalogu przy użyciu eachFile funkcja klasy File.
class Example {
static void main(String[] args) {
new File("E:/Temp").eachFile() {
file->println file.getAbsolutePath()
}
}
}
Dane wyjściowe wyświetlą wszystkie pliki w katalogu E: \ Temp
Jeśli chcesz rekurencyjnie wyświetlać wszystkie pliki w katalogu i jego podkatalogach, użyj rozszerzenia eachFileRecursefunkcja klasy File. Poniższy przykład pokazuje, jak można to zrobić.
class Example {
static void main(String[] args) {
new File("E:/temp").eachFileRecurse() {
file -> println file.getAbsolutePath()
}
}
}
Dane wyjściowe wyświetlą wszystkie pliki w katalogu E: \ Temp oraz w jego podkatalogach, jeśli istnieją.