我正在尝试将一个类型的对象“HashMap”写入文件&我的程序再次运行时恢复它。但是当我尝试读取该对象并且未从文件中读取Object时,我遇到了EOFException。我用的是flush()&当我为FileOutputStream&编写对象时,close()方法ObjectOutputStream中。我还创建了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();
}
此致 萨贾德
答案 0 :(得分:0)
EOFException
表示文件不完整。所以它不是flush()
编辑或close()
编辑或在某处吞下异常。
答案 1 :(得分:0)
该文件似乎不完整。当我查看你的代码时,你正在创建文件table.txt并尝试在之后立即读取它。
这个ctor:
new FileOutputStream(tableFile)
将覆盖该文件。如果您之后阅读它,它将为空(除了来自OOS的标题信息)