私は現在、Javaクラスの1つのプログラムに取り組んでおり、ファイルの読み取りで壁にぶつかり続けています。JTableを使用して情報を表示しているので、ファイルから情報を読み取ると、その情報が行に追加されます。空白行がある場合は常に、スキャナーはそれを読み取れず、エラーをスローします。最後のスキャン行でjava.util.NoSuchElementExceptionが発生します!今のところ、私は2つの別々のスキャナーを訴えています。String.splitメソッドを使用しようとしましたが、エラー(ArrayIndexOutOfBoundsException:0)も発生しました。以下に保存方法の読み方を投稿します(2つのスキャナーバージョンと分割の両方)。
private void read(){
try {
Scanner scanner = new Scanner(new File("games.dat"));
scanner.useDelimiter(System.getProperty("line.separator"));
while (scanner.hasNext()) {
String[] tableRow = new String[6];
Scanner recIn = new Scanner(record);
recIn.useDelimiter("\\s*\\|\\s*");
tableRow[0] = recIn.next();
tableRow[1] = recIn.next();
tableRow[2] = recIn.next();
tableRow[3] = recIn.next();
tableRow[4] = recIn.next();
//recIn.next();
recIn.close();
model.addRow(new Object[]{tableRow[0],
tableRow[1], tableRow[2],
tableRow[3], tableRow[4]});
} scanner.close(); スキャナー=null;
} catch (Exception ex) {
JOptionPane.showConfirmDialog(null, "Could not connect to file! Make sure you are not in zipped file!",
"Warning!", JOptionPane.OK_OPTION,
JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
}
}
private void save() {
for (int i = 0; i < model.getRowCount(); i++) {
String data = model.getValueAt(i, 0) + "|" + model.getValueAt(i, 1)
+ "|" + model.getValueAt(i, 2) + "|" + model.getValueAt(i, 3)
+ "|" + model.getValueAt(i, 4) + "|";
games.add(data);
}
try {
for (int i = 0; i < games.size(); i++) {
fileOut.println(games.get(i));
}
fileOut.close();
} catch (Exception ex) {
JOptionPane.showConfirmDialog(null, "Could not connect to file! Make sure you are not in zipped file!",
"Warning!", JOptionPane.OK_OPTION,
JOptionPane.ERROR_MESSAGE);
}
}