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

标签 java binary binaryfiles

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

相关文章:

c# - 在 C# 中搜索文本文件?

java - 单击旁边的图标,删除 JCombobox 下拉列表中的项目

java - 为什么在 Java 中使用类名而不是对象来访问类方法或变量更好?

javascript - 字符集有什么问题?

Java BigInteger testBit 64 位长

node.js - Node Express 从二进制字符串中保存 pdf

c - 使用 fgetc 时是否可能将 EOF 与正常字节值混淆?

c++ - 读写二进制文件

java - java 中的 JSONArray 迭代

c - 将二进制值存储到无符号 int 数组中