「HashMap」の種類のオブジェクトをファイルに書き込んで、プログラムを再度実行したときにそれを回復しようとしています。しかし、そのオブジェクトを読み取ろうとすると EOFException に直面し、オブジェクトがファイルから読み取られません。FileOutputStream と ObjectOutputStream のオブジェクトを作成するときに、flush() メソッドと close() メソッドを使用します。また、ファイル用に OutputStream と InputStream を一緒に作成します。ここに私のコードがあります:
DataOutputStream outToFile;
DataInputStream inFromFile;
ObjectOutputStream writeTableToFile;
ObjectInputStream readTableFromFile;
File tableFile;
public DNS(){
try {
tableFile = new File("table.txt");
outToFile = new DataOutputStream(new FileOutputStream(tableFile) );
writeTableToFile = new ObjectOutputStream(outToFile);
inFromFile = new DataInputStream(new FileInputStream(tableFile));
readTableFromFile = new ObjectInputStream(inFromFile);
HashMap table2 = (HashMap) readTableFromFile.readObject();
if (table2 == null)
table=new HashMap(100);
else
table = table2;
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(EOFException e){
table=new HashMap(100);
}
catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
オブジェクトを書き込むためのコードは次のとおりです。
table.put(NameField.getText(), IPField.getText());
try {
//writeTableToFile.reset();
writeTableToFile.writeObject(table);
writeTableToFile.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
よろしく、サジャド