web-dev-qa-db-fra.com

Comment lire un fichier Groovy dans une chaîne?

J'ai besoin de lire un fichier à partir du système de fichiers et de charger tout le contenu dans une chaîne dans un contrôleur groovy, quel est le moyen le plus simple de le faire?

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

Si vous devez spécifier le codage de caractères, utilisez plutôt le code suivant:

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

Le chemin le plus court est en effet juste

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

mais dans ce cas, vous n'avez aucun contrôle sur la façon dont les octets du fichier sont interprétés comme des caractères. AFAIK groovy essaie de deviner le codage ici en regardant le contenu du fichier.

Si vous souhaitez un codage de caractère spécifique, vous pouvez spécifier un nom de jeu de caractères avec

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

Voir Documentation de l'API sur File.getText(String) pour plus de détails.

76
jaetzold

Une légère variation ...

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

le plus simple serait

new File(filename).getText()

ce qui signifie que vous pouvez simplement faire:

new File(filename).text

11
Reverend Gonzo

Dans mon cas, new File() ne fonctionne pas, il provoque un FileNotFoundException lorsqu’il est exécuté dans un travail de pipeline Jenkins. Le code suivant a résolu cela, et est encore plus facile à mon avis:

def fileContents = readFile "path/to/file"

Je ne comprends toujours pas cette différence complètement, mais peut-être que ça aidera quelqu'un d'autre avec le même problème. L'exception a probablement été provoquée parce que new File() crée un fichier sur le système qui exécute le code groovy, qui était un système différent de celui contenant le fichier que je voulais lire.

9
P Kuijpers

Ici, vous pouvez trouver un autre moyen de faire de même.

Lire le fichier.

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

Lire le fichier complet.

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

Lire le fichier 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)

}

Créez un nouveau fichier.

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