Мне нужно прочитать файл из файловой системы и загрузить все содержимое в строку в Groovy-контроллере. Какой самый простой способ сделать это?
309
String fileContents = new File('/path/to/file').text
Если вам нужно указать кодировку символов, используйте следующее:
String fileContents = new File('/path/to/file').getText('UTF-8')
File
объект возник из обычной java-банки. Я не был уверен, что, возможно, у Groovy есть свой собственный специальныйFile
класс сtext
атрибутом, или что-то в этом роде, но кажется, что не имеет значения, откудаFile
берется объект, создается ли его экземпляр с помощью кода Groovy или кода Java.Самый короткий путь действительно
но в этом случае вы не можете контролировать, как байты в файле интерпретируются как символы. AFAIK groovy пытается угадать кодировку, просматривая содержимое файла.
Если вы хотите определенную кодировку символов, вы можете указать имя кодировки с помощью
См. API документы
File.getText(String)
для дальнейшего использования.источник
someFile.text
не делает разумного предположения, она просто использует кодировку платформы по умолчанию (обычно UTF-8 в современных Linux, но что-то вроде windows-1252 или MacRoman в Windows / Mac OS, если вы не переопределили ее-Dfile.encoding=...
)Небольшое изменение ...
источник
самый простой способ будет
new File(filename).getText()
что означает, что вы могли бы просто сделать:
new File(filename).text
источник
В моем случае
new File()
это не работает, это вызываетFileNotFoundException
запуск в конвейерном задании Jenkins. Следующий код решил это, и, на мой взгляд, еще проще:Я до сих пор не понимаю эту разницу полностью, но, возможно, это поможет кому-то еще с такой же проблемой. Возможно, исключение было вызвано тем, что в системе
new File()
создается файл, который выполняет код groovy, который отличался от того, который содержит файл, который я хотел прочитать.источник
String fp_f = readFile("any_file") if (fp.length()) { currentBuild.description = fp }
Кроме того, если файл не найден, возникает ошибка.Здесь вы можете найти другой способ сделать то же самое.
Читать файл.
Читать полный файл.
Читать файл Line Bye Line.
Создать новый файл.
источник
def
когда вы указываете тип.