我正在尝试将数据写入二进制文件,但遇到困难。当我运行此方法时,我没有得到文件的任何输出。另外,在编写“日期”对象时,我似乎找不到将其作为参数的写入方法。该对象由 int 月、日和年组成。如何正确地将其写入二进制文件?
此外,"file"也适用于二进制吗?我以前只将它用于常规 .txt 文件,我不确定在这种情况下是否可以以相同的方式使用它。谢谢!
这是我的编写方法:
private void writeBinary(){
//String fileName = getUserInput();
String fileTest = "BinaryMonster.bin";
File file = new File(fileTest);
DataOutputStream out;
try{
out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file, true)));
if(!(file.exists())){
file.createNewFile();
System.out.println("New file created...");
}
for(int i = 0; i < monsterAttacks.size(); i++){
out.writeInt(monsterAttacks.get(i).getID());
out.write(monsterAttacks.get(i).getDate()); //getting error
out.writeUTF(monsterAttacks.get(i).getName() + monsterAttacks.get(i).getLocation() + monsterAttacks.get(i).getReporter());
}
} catch(IOException e) {
e.printStackTrace();
}
}
最佳答案
它给出错误,因为您正在使用 DataOutputStream 将整个日期对象写入文件,而 DataOutputStream 不允许您这样做。
以String的形式写入到文件中。会更好。
out.writeUTF(monsterAttacks.get(i).getDate().toString());
但是如果你想将整个对象保存到文件中,那么你需要使用ObjectOutputStream将整个序列化对象写入文件。
这是刷新和关闭文件的更好方法。
out.flush();
out.close();
关于java - 具有自定义对象的二进制文件 I/O - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47369957/