2012-10-14 170 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

感谢的例子! –

相关问题