357 Stimmen

Wie liest man eine Datei in Groovy in eine Zeichenkette ein?

Ich brauche, um eine Datei aus dem Dateisystem zu lesen und laden den gesamten Inhalt in eine Zeichenfolge in einem Groovy-Controller, was ist der einfachste Weg, das zu tun?

575voto

Dónal Punkte 180956
String fileContents = new File('/path/to/file').text

Wenn Sie die Zeichenkodierung angeben müssen, verwenden Sie stattdessen den folgenden Text:

String fileContents = new File('/path/to/file').getText('UTF-8')

85voto

jaetzold Punkte 1598

Der kürzeste Weg ist tatsächlich nur

String fileContents = new File('/path/to/file').text

aber in diesem Fall haben Sie keine Kontrolle darüber, wie die Bytes in der Datei als Zeichen interpretiert werden. AFAIK versucht Groovy hier, die Kodierung anhand des Dateiinhalts zu erraten.

Wenn Sie eine bestimmte Zeichenkodierung wünschen, können Sie einen Zeichensatznamen mit

String fileContents = new File('/path/to/file').getText('UTF-8')

Véase API-Dokumente auf File.getText(String) für weitere Informationen.

62voto

linus1412 Punkte 827

Eine kleine Abwandlung...

new File('/path/to/file').eachLine { line ->
  println line
}

37voto

P Kuijpers Punkte 1412

In meinem Fall new File() nicht funktioniert, verursacht es eine FileNotFoundException wenn sie in einem Jenkins-Pipeline-Auftrag ausgeführt wird. Der folgende Code löste dieses Problem und ist meiner Meinung nach sogar noch einfacher:

def fileContents = readFile "path/to/file"

Ich verstehe diesen Unterschied zwar immer noch nicht ganz, aber vielleicht hilft es ja anderen, die das gleiche Problem haben. Möglicherweise wurde die Ausnahme verursacht, weil new File() erzeugt eine Datei auf dem System, das den Groovy-Code ausführt, das ein anderes System ist als das, auf dem sich die Datei befindet, die ich lesen wollte.

18voto

Reverend Gonzo Punkte 37720

Der einfachste Weg wäre

new File(filename).getText()

was bedeutet, dass Sie es einfach tun könnten:

new File(filename).text

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X