2012-10-14 168 views
1

我在這裏是新來的,只是努力嘗試讀取文本文件。每一行都有一個單詞和一個相應的數字代碼。這個想法是讀取它並將代碼和單詞放入單獨的變量中。我不知道這麼多關於這方面的,但我一直在四處尋找在線,並與下面上來:在java中讀取文本文件 - 爲什麼跳過了行?

try{ 
    FileReader freader=new FileReader(f); 
    BufferedReader inFile=new BufferedReader(freader); 
    while (inFile.readLine()!=null){ 
     String s=null; 
     s=inFile.readLine(); 
     System.out.println(s); 
       String[] tokens=s.split(" "); 
     string=tokens[0]; 
     System.out.println(string); 
     code=tokens[1]; 
     System.out.println(code); 
     c.insert(string, code); 
    }//end outer while 
}//end try 

的問題是,該文本文件的第一行不被讀取。然後它每次都跳過一行! (換句話說,只讀取第1,3,5,7行等)

正如我上面所說的,我是新的,對於我所看到的所有不同的東西我都不太瞭解不同的網站在線(比如爲什麼所有的東西都是緩衝的或緩衝的,或者如何正確地使用所有的分詞器東西)。我在不同的時間嘗試了幾件不同的事情,最終以此結束。

回答

7

您的while循環吞噬了文件中的一半行。

while (inFile.readLine()!=null) 

讀取一條線,但不會將其分配到任何東西。在循環之前聲明String並以這種方式讀取每一行。

String line; 
while ((line = inFile.readLine()) != null) 

現在變量line將可循環內,所以你不需要調用inFile.readLine()在循環。

0

你的問題是你正在閱讀每一行兩次。一個在時間塊內,一個在時間段內。

試試這個:

try{ 
    FileReader freader=new FileReader(f); 
    BufferedReader inFile=new BufferedReader(freader); 
    String s; 
    while ((s=inFile.readLine())!=null){  
     System.out.println(s); 
     String[] tokens=s.split(" "); 
     string=tokens[0]; 
     System.out.println(string); 
     code=tokens[1]; 
     System.out.println(code); 
     c.insert(string, code); 
    }//end outer while 
}//end try 
+0

感謝的例子! –

相關問題