Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
Java 修改二进制文件中的对象_Java_File_Oop_Object_Read Write - Fatal编程技术网

Java 修改二进制文件中的对象

Java 修改二进制文件中的对象,java,file,oop,object,read-write,Java,File,Oop,Object,Read Write,考虑到我有一个来自自定义类的对象,我使用FileOutputStream和ObjectOutputStream将其写入.dat文件。如何修改文件中的对象?我只能在文件中读取或写入对象。。 我知道我们可以创建一个临时文件,然后相应地重命名该文件,但是没有其他方法吗 我确实获得了预期的输出,但是没有其他方法吗?是的,您可以使用FileOutputStream&ObjectOutputStream类来实现 class MyBean { public String firstvalue;

考虑到我有一个来自自定义类的对象,我使用FileOutputStream和ObjectOutputStream将其写入.dat文件。如何修改文件中的对象?我只能在文件中读取或写入对象。。 我知道我们可以创建一个临时文件,然后相应地重命名该文件,但是没有其他方法吗


我确实获得了预期的输出,但是没有其他方法吗?

是的,您可以使用FileOutputStream&ObjectOutputStream类来实现

 class MyBean {
   public String firstvalue;
   public String secondvalue;
   public MyBean (String firstvalue,String secondvalue){
     this.firstvalue=firstvalue;
     this.secondvalue=secondvalue;
  }

}
public class FileSerialization {

    public static void main(String[] args) {

        try {
            MyBean mb = new MyBean("first value", "second value");

            // write object to file
            FileOutputStream fos = new FileOutputStream("mybean.dat");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(mb);
            oos.close();

            // read object from file
            FileInputStream fis = new FileInputStream("mybean.dat");
            ObjectInputStream ois = new ObjectInputStream(fis);
            MyBean result = (MyBean) ois.readObject();
            ois.close();

            System.out.println("One:" + result.firstvalue + ", Two:" + result.secondvalue);
          result.firstvalue="Changed;";

          // write object to file
            fos = new FileOutputStream("mybean.dat");
            oos = new ObjectOutputStream(fos);
            oos.writeObject(result);
            oos.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

}

“修改对象”与“重命名文件”有什么关系?你到底想做什么?有点不清楚。你知道文件是字节数组,你不能轻易地插入或删除这样一个数组的一部分吗?我的意思是,我不是修改存储在文件中的对象,而是创建一个临时文件,使用新内容,删除旧文件,然后按照suchI知道的那样重命名临时文件,只是问是否可能?谢谢,但这段代码是用来读写对象的,对吗?例如,如果我想修改文件中存在的MyBean对象,该怎么办?当然,我可以找到它,但我们可以修改它吗?@AbhinandHari是的,你可以修改它,然后再保存到文件中。