Відповіді:
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')
Для подальшого ознайомлення див. Документи Документи APIFile.getText(String)
.
someFile.text
не здогадується, вона просто використовує кодування платформи за замовчуванням (як правило, UTF-8 на сучасних Linux, але щось на кшталт Windows-1252 або MacRoman в Windows / Mac OS, якщо ви не перекрили це -Dfile.encoding=...
)
найпростіший спосіб був би
що означає, що ви могли просто зробити:
new File(filename).text
У моєму випадку new File()
не працює, це призводить до FileNotFoundException
запуску в трубопроводі Дженкінса. Наступний код вирішив це, і на мою думку ще простіше:
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
коли ви вказуєте тип.