2013-05-23 78 views
5

Tôi đang cố gắng đọc dòng tệp văn bản được phân tách bằng tab trên mỗi dòng. Các dòng được phân cách bằng cách sử dụng trả về vận chuyển ("\ r \ n") và LineFeed (\ "n") được cho phép trong các trường văn bản được phân tách bằng tab.Java: Cách đọc từng dòng tệp bằng cách bỏ qua " n"

Vì tôi muốn đọc Dòng tệp trên mỗi dòng, tôi muốn chương trình của mình bỏ qua một "\ n" độc lập. Thật không may, BufferedReader sử dụng cả hai khả năng để tách các dòng. Làm cách nào để sửa đổi mã của tôi, để bỏ qua "\ n" độc lập?

try 
{ 
    BufferedReader in = new BufferedReader(new FileReader(flatFile)); 
    String line = null; 
    while ((line = in.readLine()) != null) 
    { 
     String cells[] = line.split("\t");       
     System.out.println(cells.length); 
     System.out.println(line); 
    } 
    in.close(); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 

Trả lời

15

Sử dụng một java.util.Scanner.

Scanner scanner = new Scanner(new File(flatFile)); 
scanner.useDelimiter("\r\n"); 
while (scanner.hasNext()) { 
    String line = scanner.next(); 
    String cells[] = line.split("\t");       
    System.out.println(cells.length); 
    System.out.println(line); 
} 
+0

Cảm ơn, công trình này hoàn hảo! – Del

+0

Tên của phương pháp thực sự là sử dụngDelimiter (các chỉnh sửa phải có ít nhất 6 ký tự để tôi không thể tự mình chỉnh sửa câu trả lời) –

+0

@Krige - được đánh giá cao. Tôi đã sưa nó. – rolfl

0

Bạn chỉ có thể làm cho nó bỏ qua dòng trống:

while ((line = in.readLine()) != null) { 
    // Skip lines that are empty or only contain whitespace 
    if (line.trim().isEmpty()) { 
     continue; 
    } 

    String[] cells = line.split("\t"); 
    System.out.println(cells.length); 
    System.out.println(line); 
} 
0

Bạn có thể sử dụng phương thức FileUtils.readLines từ apache commons-io.

Lợi thế của việc sử dụng nó là bạn không phải quan tâm đến việc mở và đóng tệp. Nó được xử lý cho bạn.

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