Как прочитать файл в Groovy в строку?

Мне нужно прочитать файл из файловой системы и загрузить все содержимое в строку в контроллер заводной, что самый простой способ сделать это?

6 ответов


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

Если вам нужно указать кодировку символов, используйте вместо этого следующее:

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

самый короткий путь действительно просто

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

но в этом случае у вас нет контроля над тем, как байты в файле интерпретируются как символы. AFAIK groovy пытается угадать кодировку здесь, глядя на содержимое файла.

Если вы хотите определенную кодировку символов, вы можете указать имя кодировки с

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

посмотреть API docs on File.getText(String) для дальнейшего использования.


небольшое изменение...

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

самый простой способ будет

new File(filename).getText()

что означает, что вы можете просто сделать:

new File(filename).text


в моем случае new File() не работает, это вызывает FileNotFoundException при запуске в производство Дженкинс работу. Следующий код решил это, и на мой взгляд, еще проще:

def fileContents = readFile "path/to/file"

Я все еще не понимаю эту разницу полностью, но, возможно, это поможет кому-то еще с той же проблемой. Возможно, исключение было вызвано тем, что new File() создает файл в системе, которая выполняет код groovy, который был другой системой, чем та, которая содержит файл, который я хотел читать.


здесь вы можете найти другой способ сделать то же самое.

читать файл.

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

читать весь файл.

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

чтение строки файла 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)

}

создать новый файл.

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