具有自定义对象的二进制文件I/O-Java
我试图将数据写入二进制文件,但遇到了困难。当我运行这个方法时,我不会得到任何文件的输出。此外,在编写“Date”对象时,我似乎找不到将其作为参数的write方法。对象由整数月、日和年组成。如何将其正确写入二进制文件 此外,“文件”也适用于二进制文件吗?我以前只在常规的.txt文件中使用过它,我不确定在这种情况下是否可以用同样的方法使用它。谢谢 以下是我的写作方法:具有自定义对象的二进制文件I/O-Java,java,binary,binaryfiles,Java,Binary,Binaryfiles,我试图将数据写入二进制文件,但遇到了困难。当我运行这个方法时,我不会得到任何文件的输出。此外,在编写“Date”对象时,我似乎找不到将其作为参数的write方法。对象由整数月、日和年组成。如何将其正确写入二进制文件 此外,“文件”也适用于二进制文件吗?我以前只在常规的.txt文件中使用过它,我不确定在这种情况下是否可以用同样的方法使用它。谢谢 以下是我的写作方法: private void writeBinary(){ //String fileName = getUserInput()
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();
}
}
private void writeBinary(){
//字符串文件名=getUserInput();
字符串fileTest=“BinaryMonster.bin”;
文件=新文件(fileTest);
数据输出流输出;
试一试{
out=新的DataOutputStream(新的BufferedOutputStream(新的FileOutputStream(file,true));
如果(!(file.exists())){
createNewFile();
System.out.println(“创建了新文件…”);
}
对于(int i=0;i
它给出了错误,因为您正在使用DataOutputStream将整个日期对象写入文件,而DataOutputStream不允许您这样做
以字符串的形式将其写入文件。这样会更好
out.writeUTF(monsterAttacks.get(i).getDate().toString());
但是如果要将整个对象保存到文件中,则需要使用ObjectOutputStream将整个序列化对象写入文件中
out.flush();
out.close();
这是刷新和关闭文件的更好方法
out.flush();
out.close();
//获取错误
——什么错误?请显示完整的错误消息。此外,您似乎主要是在向文件中写入文本——为什么不将数据输出为文本文件,如JSON或XML文件?或者通过ObjectOutputStream作为序列化文件?此外,您永远不会close()
或flush()
流。out.writeLong(monsterAttacks.get(i).getDate().getTime())
但即使在您修复此问题后,您的代码也会被破坏,因为在连接此文件时,您很难从该文件中检索任何可用数据。您对我修复它有什么建议吗@霍夫洛菲尔斯酒店