2009-04-01 21 views
14

Các Javadoc cho BufferedReader.readLine() nói:Có tương đương với BufferedReader.readLine() cho phép tôi chọn ký tự cuối dòng của mình không?

Một dòng được coi là chấm dứt bởi bất kỳ một trong những thức ăn dòng ('\ n'), một trở về vận chuyển ('\ r'), hoặc một vận chuyển trở lại theo sau bởi một linefeed.

tôi cần kiểm soát tốt hơn một chút so với này (ví dụ tôi muốn để có thể xác định rằng sự kết thúc của dòng là "\ r \ n", vì vậy mà một "\ n" tự nó không chấm dứt dòng).

Có bất kỳ hàm JDK hoặc thư viện nào thực hiện việc này không?

+0

Tôi nghi ngờ hành vi là cho phép các tệp văn bản hoạt động giống nhau bất kể nền tảng, do đó, nó ẩn chi tiết đó. –

Trả lời

12

Hãy thử sử dụng các lớp Scanner:

String line = Scanner(file).useDelimiter("\r\n").next(); 
+0

Tuyệt vời! Điều này trông giống như những gì tôi cần. Cảm ơn. –

+3

Kinh nghiệm cay đắng cho thấy điều đáng nói đến là Máy quét sử dụng API kiểu Iterator (hasNext/next) và ném NoSuchElementException thay vì trả về null khi không có thêm đầu vào –

0

Tôi không biết bất kỳ API chuẩn nào có thể thực hiện điều này.

Có thể đọc đơn giản trong tệp WHOLE thành chuỗi và sau đó chia nhỏ nó thành ký tự kết thúc bạn muốn.

for(String line: testFile.split("\r\n")){ 
... 
} 
+0

Rất tiếc, các tệp của chúng tôi thường quá lớn để có thể hoạt động. –

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