テキストファイルがある場合:
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"); を追加しない場合 文字列が追加され、すべてが新しい区切り記号なしで 1 行に結合されます。ただし、この区切り記号により、テキスト ファイルの最後に空白行が追加されます。この問題を回避するためにできることはありますか?
ファイルを読んだところで解くべきですか?または、ファイルを新しいファイルに書き込む場所で解決します。
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();
}
編集: この上記の読み取りは、今では完全に機能します!