2011-10-11 36 views

Trả lời

389
String fileContents = new File('/path/to/file').text 

Nếu bạn cần phải xác định mã hóa ký tự, sử dụng sau đây thay vì :

String fileContents = new File('/path/to/file').getText('UTF-8') 
+48

phải không? jeez, tôi cảm thấy như một thằng ngốc vì đã hỏi, cảm ơn – raffian

+6

Đó là vẻ đẹp của Groovy :) – Igor

+1

Tôi có phải thực hiện một số câu lệnh close() hoặc người đọc có được đóng bởi phương thức getText() không? –

32

Một biến thể nhẹ ...

new File('/path/to/file').eachLine { line -> 
    println line 
} 
+5

điều này không đọc nội dung tập tin vào một biến –

+3

Đúng, nhưng nó vẫn là một thành ngữ hữu ích để nắm bắt "cho bản ghi". –

67

Con đường ngắn nhất thực sự là chỉ

String fileContents = new File('/path/to/file').text 

nhưng trong trường hợp này bạn không có kiểm soát về cách các byte trong file được hiểu là ký tự. AFAIK groovy 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 có một nhân vật cụ thể mã hóa, bạn có thể chỉ định một tên charset với

String fileContents = new File('/path/to/file').getText('UTF-8') 

Xem API docs on File.getText(String) để tham khảo thêm.

+6

+1 để giới thiệu phiên bản có tham số mã hóa. Đồng bằng 'someFile.text' không đưa ra dự đoán thông minh, nó chỉ sử dụng mã hóa mặc định nền tảng (thường là UTF-8 trên Linux hiện đại, nhưng giống như windows-1252 hoặc MacRoman trên Windows/Mac OS, trừ khi bạn đã ghi đè nó với '-Dfile.encoding = ...') –

Các vấn đề liên quan