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')
Fileobiekt pochodzi ze zwykłego słoika java. Nie byłem pewien, czy może Groovy ma własną specjalną Fileklasę z tym textatrybutem, czy coś, ale wydaje się, że nie ma znaczenia, skąd Filepochodzi 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.textnie 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 FileNotFoundExceptionuruchomienie 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();
defkiedy określisz typ.