Как прочитать файл в Groovy в строку? - PullRequest
286 голосов
/ 11 октября 2011

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

Ответы [ 6 ]

469 голосов
/ 11 октября 2011
String fileContents = new File('/path/to/file').text

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

String fileContents = new File('/path/to/file').getText('UTF-8')
76 голосов
/ 24 октября 2012

Самый короткий путь - просто

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

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

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

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

См. Документы API для File.getText(String) для дальнейшего использования.

48 голосов
/ 12 октября 2011

Небольшое отклонение ...

new File('/path/to/file').eachLine { line ->
  println line
}
11 голосов
/ 11 октября 2011

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

new File(filename).getText()

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

new File(filename).text

7 голосов
/ 31 мая 2018

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

def fileContents = readFile "path/to/file"

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

2 голосов
/ 26 апреля 2018

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

Читать файл.

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();

Читать файл Line ByeСтрока.

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...