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?
Antworten
Zu viele Anzeigen?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.
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.
- See previous answers
- Weitere Antworten anzeigen