2013-05-23 31 views
5

görmezden gelerek okuyor Her satırda sekme ile ayrılmış bir metin dosyası satırı okumaya çalışıyorum. Satırlar satır başı kullanılarak ("\ r \ n") ayrılır ve Sekme ile ayrılmış metin alanlarında satır besleme (\ "n") kullanılabilir.Java: Dosya satırını, " n"

Hat Başına Dosya Hattını okumak istediğimden, programımın bağımsız bir "\ n" öğesini yoksaymasını istiyorum. Ne yazık ki, BufferedReader, satırları ayırmak için her iki olasılığı da kullanır. Bağımsız "\ n" öğesini yok saymak için kodumu nasıl değiştirebilirim?

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(); 
} 

cevap

15

bir java.util.Scanner kullanın.

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

Teşekkürler, bu mükemmel çalışıyor! – Del

+0

Yöntemin adı aslında useDelimiter (düzenlemeler en az 6 karakter olmalı, böylece cevabı kendim düzenleyemiyorum) –

+0

@Krige - çok beğeni topladı. Onu tamir ettim. – rolfl

0

Sadece boş satırları atlamak yapabiliriz:

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

Sen apache commons-io dan FileUtils.readLines yöntemleri kullanabilirsiniz.

Kullanmanın avantajı, dosyayı açıp kapamakla ilgilenmenize gerek olmamasıdır. Bu sizin için ele alınır.

İlgili konular