Muszę odczytać plik z systemu plików i załadować całą zawartość do ciągu w świetnym kontrolerze, jaki jest najłatwiejszy sposób?
309
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 tymtext
atrybutem, czy coś, ale wydaje się, że nie ma znaczenia, skądFile
pochodzi obiekt, czy jest on tworzony przez kod Groovy czy kod Java.Najkrótsza droga jest rzeczywiście sprawiedliwa
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ą
Zobacz dokumentację API w
File.getText(String)
celu uzyskania dalszych informacji.źródło
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 ...
źródło
najłatwiej byłoby
new File(filename).getText()
co oznacza, że możesz po prostu zrobić:
new File(filename).text
źródło
W moim przypadku
new File()
nie działa, powodujeFileNotFoundException
uruchomienie w trybie potoku Jenkins. Poniższy kod rozwiązał ten problem i moim zdaniem jest jeszcze łatwiejszy: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ć.źródło
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.
Przeczytaj pełny plik.
Czytaj plik Linia Bye Linia.
Utwórz nowy plik.
źródło
def
kiedy określisz typ.