Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有自定义对象的二进制文件I/O-Java_Java_Binary_Binaryfiles - Fatal编程技术网

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

具有自定义对象的二进制文件I/O-Java,java,binary,binaryfiles,Java,Binary,Binaryfiles,我试图将数据写入二进制文件,但遇到了困难。当我运行这个方法时,我不会得到任何文件的输出。此外,在编写“Date”对象时,我似乎找不到将其作为参数的write方法。对象由整数月、日和年组成。如何将其正确写入二进制文件 此外,“文件”也适用于二进制文件吗?我以前只在常规的.txt文件中使用过它,我不确定在这种情况下是否可以用同样的方法使用它。谢谢 以下是我的写作方法: private void writeBinary(){ //String fileName = getUserInput()

我试图将数据写入二进制文件,但遇到了困难。当我运行这个方法时,我不会得到任何文件的输出。此外,在编写“Date”对象时,我似乎找不到将其作为参数的write方法。对象由整数月、日和年组成。如何将其正确写入二进制文件

此外,“文件”也适用于二进制文件吗?我以前只在常规的.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();
    }
}
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())
但即使在您修复此问题后,您的代码也会被破坏,因为在连接此文件时,您很难从该文件中检索任何可用数据。您对我修复它有什么建议吗@霍夫洛菲尔斯酒店