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

时间:2017-11-18 19:08:30

标签: java binary binaryfiles

我正在尝试将数据写入二进制文件并且遇到困难。当我运行此方法时,我没有得到任何输出到该文件。另外,在编写“Date”对象时,我似乎无法找到将其作为参数的write方法。该对象由int月,日和年组成。如何正确地将其写入二进制文件?

此外,“文件”也适用于二进制文件吗?我之前只使用过常规的.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();
    }
}

1 个答案:

答案 0 :(得分:1)

由于您使用DataOutputStream将整个日期对象写入文件,因此不会出错。

以String的形式将其写入文件。会更好。

out.writeUTF(monsterAttacks.get(i).getDate().toString());

但是如果你想将整个对象保存到文件中,那么你需要使用 ObjectOutputStream 将整个序列化对象写入文件。

这是更好地刷新和关闭文件的方法。

out.flush();
out.close();