在java中读取文本文件 - 为什么跳过行?

时间:2012-10-14 21:20:13

标签: java file text token readline

我是新来的,只是努力尝试阅读文本文件。在每一行上都有一个单词和相应的数字代码。我们的想法是阅读它并将代码和单词放在单独的变量中。我对这个领域了解不多,但我一直在网上四处寻找以下内容:

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行等)

正如我上面所说,我是新手,而且我不太了解我在网上不同网站上看到的所有不同内容(比如为什么一切都是bufferedThis或bufferedThat,或者如何正确使用所有令牌化器的东西) 。我在不同的时间尝试了几件不同的事情,结果就是这样。

2 个答案:

答案 0 :(得分:7)

您的while循环正在吞下文件中的一半。

while (inFile.readLine()!=null)

读取一行,但不将其分配给任何内容。在循环之前声明String并以这种方式读取每一行。

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

现在变量line将在循环中可用,因此您无需在循环中调用inFile.readLine()

答案 1 :(得分:0)

你的问题是你正在阅读每一行两次。一个在while块内,一个在while的条件下。

试试这个:

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