1
如果你有一個文本文件:爲什麼文本文件中的空行導致java.util.NoSuchElementException?
AAA:123:123:AAAA
BBB:456:456:BBBB
起初,當出現在文本文件中沒有空白行,你閱讀和檢索數據。一切安好。
當你將文件寫入到一個新的文件,並替換數據或更新
AAA:9993:9993:AAAA
BBB:456:456:BBBB
-------- This is a blank line-----------
發生這種情況後,NoSuchElementException異常會彈出。如果未刪除空白行,則該錯誤將始終彈出。
try {
File fileCI = new File("CI.txt");
FileWriter fileWriter = new FileWriter(fileCI);
BufferedWriter bw = new BufferedWriter(fileWriter);
for (Customer ci : custList){
if (inputUser.equals(ci.getUserName()) && inputPass.equals(ci.getPassword())) {
ci.setCardNo(newCardNo);
ci.setCardType(newCardType);
}
String text = ci.getRealName() + ";" + ci.getUserName() + ";" + ci.getPassword() + ";" + ci.getAddress() + ";" + ci.getContact() + ";" + ci.getcardType() + ";" + ci.getcardNo() + System.getProperty("line.separator");
bw.write(text);
}
bw.close();
fileWriter.close();
}
catch (IOException e) {
e.printStackTrace();
}
如果我不添加System.getProperty(「line.separator」);字符串將被添加,並且所有內容都將被組合在一起,而不需要新的分隔符。但是這個分隔符在文本文件的末尾添加了一個空白行。有什麼我可以做,以避免這個問題?
我應該在我讀文件的地方解決嗎?或者在我將文件寫入新文件的地方解決它。
try {
Scanner read = new Scanner(file);
read.useDelimiter(";|\n");
String tmp = "";
while (read.hasNextLine()){
if (read.hasNext()){
custList.add(new Customer(read.next(), read.next(), read.next(), read.next(), read.next(), read.next(), read.next()));
} else {
break;
}
}
read.close();
}
catch (IOException e) {
e.printStackTrace();
}
編輯:這上面的閱讀現在完美的作品!
那麼,如何讓閱讀文件知道它的EOF,而不是嘗試和檢索更多的信息呢? – John 2013-04-29 13:02:18
@John看到我上面的答案。 – 2013-04-29 13:10:05
看看我編輯過的帖子..我是這麼做的嗎?而我得到的是..我只插入中間部分,但不是第一和第三行 – John 2013-04-29 13:18:24