gpt4 book ai didi

java - 具有自定义对象的二进制文件 I/O - Java

转载 作者:行者123 更新时间:2023-12-02 11:59:31 25 4
gpt4 key购买 nike

我正在尝试将数据写入二进制文件,但遇到困难。当我运行此方法时,我没有得到文件的任何输出。另外,在编写“日期”对象时,我似乎找不到将其作为参数的写入方法。该对象由 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com