Odpowiedzi:
String fileContents = new File('/path/to/file').text
Jeśli musisz określić kodowanie znaków, użyj następujących poleceń:
String fileContents = new File('/path/to/file').getText('UTF-8')
File
obiekt pochodzi ze zwykłego słoika java. Nie byłem pewien, czy może Groovy ma własną specjalną File
klasę z tym text
atrybutem, czy coś, ale wydaje się, że nie ma znaczenia, skąd File
pochodzi obiekt, czy jest on tworzony przez kod Groovy czy kod Java.
Najkrótsza droga jest rzeczywiście sprawiedliwa
String fileContents = new File('/path/to/file').text
ale w tym przypadku nie masz kontroli nad tym, jak bajty w pliku są interpretowane jako znaki. AFAIK groovy próbuje odgadnąć kodowanie tutaj, patrząc na zawartość pliku.
Jeśli chcesz kodować określony znak, możesz podać nazwę zestawu znaków za pomocą
String fileContents = new File('/path/to/file').getText('UTF-8')
Zobacz dokumentację API wFile.getText(String)
celu uzyskania dalszych informacji.
someFile.text
nie zgaduje w inteligentny sposób, po prostu używa domyślnego kodowania platformy (zwykle UTF-8 w nowoczesnych systemach Linux, ale coś takiego jak Windows-1252 lub MacRoman w systemie Windows / Mac OS, o ile go nie zastąpiłeś -Dfile.encoding=...
)
Niewielka zmiana ...
new File('/path/to/file').eachLine { line ->
println line
}
najłatwiej byłoby
co oznacza, że możesz po prostu zrobić:
new File(filename).text
W moim przypadku new File()
nie działa, powoduje FileNotFoundException
uruchomienie w trybie potoku Jenkins. Poniższy kod rozwiązał ten problem i moim zdaniem jest jeszcze łatwiejszy:
def fileContents = readFile "path/to/file"
Nadal nie rozumiem tej różnicy całkowicie, ale może pomoże to każdemu, kto ma takie same problemy. Być może wyjątek został spowodowany, ponieważ new File()
tworzy w systemie plik, który wykonuje świetny kod, który był innym systemem niż ten, który zawiera plik, który chciałem przeczytać.
String fp_f = readFile("any_file") if (fp.length()) { currentBuild.description = fp }
Ponadto, jeśli plik nie zostanie znaleziony, oznacza to błąd.
Tutaj możesz znaleźć inny sposób na zrobienie tego samego.
Przeczytaj plik.
File file1 = new File("C:\Build\myfolder\myTestfile.txt");
def String yourData = file1.readLines();
Przeczytaj pełny plik.
File file1 = new File("C:\Build\myfolder\myfile.txt");
def String yourData= file1.getText();
Czytaj plik Linia Bye Linia.
File file1 = new File("C:\Build\myfolder\myTestfile.txt");
for (def i=0;i<=30;i++) // specify how many line need to read eg.. 30
{
log.info file1.readLines().get(i)
}
Utwórz nowy plik.
new File("C:\Temp\FileName.txt").createNewFile();
def
kiedy określisz typ.