Saya perlu membaca file dari sistem file dan memuat seluruh konten ke dalam string di pengontrol asyik, apa cara termudah untuk melakukannya?
309
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 memilikiFile
kelas khusus dengantext
atribut, atau sesuatu, tetapi tampaknya tidak masalah dari manaFile
objek itu berasal, apakah itu dipakai oleh kode Groovy atau kode Java.Cara terpendek memang adil
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
Lihat API API
File.getText(String)
untuk referensi lebih lanjut.sumber
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 ...
sumber
cara termudah adalah
new File(filename).getText()
yang berarti Anda bisa melakukan:
new File(filename).text
sumber
Dalam kasus saya
new File()
tidak bekerja, itu menyebabkanFileNotFoundException
ketika dijalankan dalam pekerjaan pipa Jenkins. Kode berikut memecahkan masalah ini, dan bahkan lebih mudah menurut saya: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.sumber
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.
Baca file lengkap.
Baca file Line Bye Line.
Buat file baru.
sumber
def
ketika Anda menentukan jenisnya.