我是新来的,只是努力尝试阅读文本文件。在每一行上都有一个单词和相应的数字代码。我们的想法是阅读它并将代码和单词放在单独的变量中。我对这个领域了解不多,但我一直在网上四处寻找以下内容:
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,或者如何正确使用所有令牌化器的东西) 。我在不同的时间尝试了几件不同的事情,结果就是这样。
答案 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