it-swarm.com.de

Wie liest man eine Datei in Groovy in einen String?

Ich muss eine Datei aus dem Dateisystem lesen und den gesamten Inhalt in eine Zeichenfolge in einem groovigen Controller laden. Wie geht das am einfachsten?

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

Wenn Sie die Zeichenkodierung angeben müssen, verwenden Sie stattdessen Folgendes:

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

Der kürzeste Weg ist in der Tat gerade

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

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

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

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

Weitere Informationen finden Sie unter API-Dokumente zu File.getText(String) .

76
jaetzold

Eine leichte Variation ...

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

der einfachste Weg wäre

new File(filename).getText()

was bedeutet, Sie könnten einfach tun:

new File(filename).text

11
Reverend Gonzo

In meinem Fall funktioniert new File() nicht, es verursacht FileNotFoundException, wenn es in einem Jenkins-Pipeline-Job ausgeführt wird. Der folgende Code hat das gelöst und ist meiner Meinung nach noch einfacher:

def fileContents = readFile "path/to/file"

Ich verstehe diesen Unterschied immer noch nicht ganz, aber vielleicht hilft er jedem, der die gleichen Probleme hat. Möglicherweise wurde die Ausnahme verursacht, weil new File() eine Datei auf dem System erstellt, die den Groovy-Code ausführt. Dies war ein anderes System als das, das die Datei enthält, die ich lesen wollte.

9
P Kuijpers

Hier können Sie einen anderen Weg finden, um dasselbe zu tun.

Datei lesen.

File file1 = new File("C:\Build\myfolder\myTestfile.txt");
def String yourData = file1.readLines();

Vollständige Datei lesen.

File file1 = new File("C:\Build\myfolder\myfile.txt");
def String yourData= file1.getText();

Lesen Sie die Datei Line Bye Line.

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)

}

Erstellen Sie eine neue Datei.

new File("C:\Temp\FileName.txt").createNewFile();
2
shashi singh