Java 修改二进制文件中的对象
考虑到我有一个来自自定义类的对象,我使用FileOutputStream和ObjectOutputStream将其写入.dat文件。如何修改文件中的对象?我只能在文件中读取或写入对象。。 我知道我们可以创建一个临时文件,然后相应地重命名该文件,但是没有其他方法吗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类来实现
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是的,你可以修改它,然后再保存到文件中。