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