Câu trả lời:
String fileContents = new File('/path/to/file').text
Nếu bạn cần chỉ định mã hóa ký tự, thay vào đó hãy sử dụng mã sau:
String fileContents = new File('/path/to/file').getText('UTF-8')
File
đối tượng có nguồn gốc từ một jar java thông thường. Tôi không chắc liệu Groovy có File
lớp đặc biệt của riêng mình với text
thuộc tính hay thứ gì đó không, nhưng có vẻ như nó không quan trọng File
đối tượng đến từ đâu, cho dù nó được khởi tạo bởi mã Groovy hay mã Java.
Con đường ngắn nhất thực sự chỉ là
String fileContents = new File('/path/to/file').text
nhưng trong trường hợp này, bạn không có quyền kiểm soát về cách các byte trong tệp được hiểu là các ký tự. Groovy AFAIK cố gắng đoán mã hóa ở đây bằng cách xem nội dung tệp.
Nếu bạn muốn mã hóa ký tự cụ thể, bạn có thể chỉ định tên bộ ký tự với
String fileContents = new File('/path/to/file').getText('UTF-8')
Xem tài liệu API trênFile.getText(String)
để tham khảo thêm.
someFile.text
không đưa ra dự đoán thông minh, nó chỉ đơn giản sử dụng mã hóa mặc định của nền tảng (thường là UTF-8 trên các Linux hiện đại, nhưng một cái gì đó như windows-1252 hoặc MacRoman trên Windows / Mac OS, trừ khi bạn đã ghi đè lên -Dfile.encoding=...
)
Một biến thể nhỏ ...
new File('/path/to/file').eachLine { line ->
println line
}
cách dễ nhất sẽ là
có nghĩa là bạn chỉ có thể làm:
new File(filename).text
Trong trường hợp của tôi new File()
không hoạt động, nó gây ra FileNotFoundException
khi chạy trong công việc đường ống Jenkins. Các mã sau đây đã giải quyết điều này, và theo tôi thậm chí còn dễ dàng hơn:
def fileContents = readFile "path/to/file"
Tôi vẫn không hiểu sự khác biệt này hoàn toàn, nhưng có lẽ nó sẽ giúp bất cứ ai khác gặp rắc rối tương tự. Có thể ngoại lệ đã được gây ra bởi vì new File()
tạo một tệp trên hệ thống thực thi mã Groovy, đó là một hệ thống khác với hệ thống chứa tệp tôi muốn đọc.
String fp_f = readFile("any_file") if (fp.length()) { currentBuild.description = fp }
Ngoài ra, nếu không tìm thấy tệp thì có lỗi.
Ở đây bạn có thể Tìm một số cách khác để làm tương tự.
Đọc tài liệu.
File file1 = new File("C:\Build\myfolder\myTestfile.txt");
def String yourData = file1.readLines();
Đọc tập tin đầy đủ.
File file1 = new File("C:\Build\myfolder\myfile.txt");
def String yourData= file1.getText();
Đọc tập tin 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)
}
Tạo một tập tin mới.
new File("C:\Temp\FileName.txt").createNewFile();
def
khi bạn chỉ định loại.