Saya perlu membaca file dari sistem file dan memuat seluruh konten ke dalam string di pengontrol asyik, apa cara termudah untuk melakukannya?
Saya perlu membaca file dari sistem file dan memuat seluruh konten ke dalam string di pengontrol asyik, apa cara termudah untuk melakukannya?
Jawaban:
String fileContents = new File('/path/to/file').text
Jika Anda perlu menentukan pengkodean karakter, gunakan yang berikut ini sebagai gantinya:
String fileContents = new File('/path/to/file').getText('UTF-8')
File
objek berasal dari toples java biasa. Saya tidak yakin apakah mungkin Groovy memiliki File
kelas khusus dengan text
atribut, atau sesuatu, tetapi tampaknya tidak masalah dari mana File
objek itu berasal, apakah itu dipakai oleh kode Groovy atau kode Java.
Cara terpendek memang adil
String fileContents = new File('/path/to/file').text
tetapi dalam kasus ini Anda tidak memiliki kontrol tentang bagaimana byte dalam file ditafsirkan sebagai karakter. AFAIK groovy mencoba menebak penyandian di sini dengan melihat konten file.
Jika Anda ingin pengkodean karakter tertentu, Anda dapat menentukan nama rangkaian karakter dengan
String fileContents = new File('/path/to/file').getText('UTF-8')
Lihat API APIFile.getText(String)
untuk referensi lebih lanjut.
someFile.text
tidak membuat dugaan yang cerdas, itu hanya menggunakan platform encoding default (biasanya UTF-8 pada Linux modern, tetapi sesuatu seperti windows-1252 atau MacRoman pada Windows / Mac OS, kecuali jika Anda menimpanya -Dfile.encoding=...
)
Variasi sedikit ...
new File('/path/to/file').eachLine { line ->
println line
}
cara termudah adalah
yang berarti Anda bisa melakukan:
new File(filename).text
Dalam kasus saya new File()
tidak bekerja, itu menyebabkan FileNotFoundException
ketika dijalankan dalam pekerjaan pipa Jenkins. Kode berikut memecahkan masalah ini, dan bahkan lebih mudah menurut saya:
def fileContents = readFile "path/to/file"
Saya masih belum memahami perbedaan ini sepenuhnya, tetapi mungkin itu akan membantu orang lain dengan masalah yang sama. Mungkin pengecualian disebabkan karena new File()
membuat file pada sistem yang mengeksekusi kode asyik, yang merupakan sistem yang berbeda dari yang berisi file yang ingin saya baca.
String fp_f = readFile("any_file") if (fp.length()) { currentBuild.description = fp }
Juga, jika file tidak ditemukan maka ada kesalahan.
Di sini Anda dapat menemukan cara lain untuk melakukan hal yang sama.
Baca file.
File file1 = new File("C:\Build\myfolder\myTestfile.txt");
def String yourData = file1.readLines();
Baca file lengkap.
File file1 = new File("C:\Build\myfolder\myfile.txt");
def String yourData= file1.getText();
Baca file 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)
}
Buat file baru.
new File("C:\Temp\FileName.txt").createNewFile();
def
ketika Anda menentukan jenisnya.