要根据用户选择,向一个文件写一个类(Student)的实例,使用FileOutputStream、BufferedOutputStream与ObjectOutputStream流,FileOutputStream初始化为:
fileOutputStream = new FileOutputStream(fileStorage, true); // fileStorage是File的实例或是字符串形式。追加写(append=true)
使用objectOutputStream.writeObject(student)进行写入,写入前建立流,写入后关闭流(如果不关闭,会写不进去)。
student = (Student) objectInputStream.readObject()用来读出。读出前建立流,读出后关闭流(如果不关闭,会读不出来)。
由于每一次启动写操作时都会写入一个标记头,造成读入时只能读取第一个写入的记录。
ObjectOutputStream的构造函数会向输出流中写入一个标识头,而ObjectInputStream会首先读入这个标识头.因此,多次以追加方式向一个文件中写入object时,该文件将会包含多个标识头.
所以用ObjectInputStream来deserialize这个ObjectOutputStream时,将产生StreamCorruptedException.
一种解决方法是可以构造一个ObjectOutputStream的子类,并覆盖writeStreamHeader()方法.
被覆盖后的writeStreamHeader()方法应判断是否为首次向文件中写入object,是则调用super.writeStreamHeader();
分享到:
相关推荐
socket objectoutputstream 传对象 例子 网上找的很好用,在网上留一份
python-javaobj 是一个 python 库,它提供了读取和写入(写入当前是 WIP)Java 对象的函数,序列化或将被ObjectOutputStream反序列化。 这种对象表示形式是 Java 世界中的标准数据交换格式。 javaobj 模块公开了...
ObjectInputStream 和 ObjectOutputStream 的作用是,对基本数据和对象进行序列化操作支持。本文给大家详细介绍了ObjectInputStream 和 ObjectOutputStream的相关知识,感兴趣的朋友一起学习吧
主要介绍了java序列化与ObjectOutputStream和ObjectInputStream的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
JavaIO对象流 FileInputStream 与 ObjectInputStream 和 ObjectOutputStream 的组合 奥利弗·缪尔
java-反序列化恢复 该项目旨在恢复使用java.io.ObjectOutputStream创建的文件
ObjectOutputStream objectOut=new ObjectOutputStream(out);objectOut.writeObject(Shashtable);objectOut.close();out.close();}catch(IOException e){}}Container con=getContentPane();con.setLayout(new ...
ObjectOutputStream output;//网络套接字输出流 ObjectInputStream input;//网络套接字输入流 ClientReceive recvThread; //建立菜单栏 JMenuBar jMenuBar = new JMenuBar(); //建立菜单组 JMenu ...
import java.io.ObjectOutputStream; public class TestObjectOutputStream { public static void main(String[] args) { try { //1.创建ObjectOutputStream类型的对象与c:/a.txt文件关联 ObjectOutputStream...
ObjectOutputStream objectOutputStream = new ObjectOutputStream( out); objectOutputStream.writeObject(bean); objectOutputStream.flush(); } catch (Exception ew) { ew....
ObjectOutputStream objout = new ObjectOutputStream(out); // 向服务器发送信息 objout.writeObject(user); socket.shutdownOutput(); System.out.println("正在向服务器端发送信息。。。"); ...
ObjectOutputStream oos =new ObjectOutputStream(os); Choice c=new Choice(); c.choice(ois, oos); // 关闭资源 oos.close(); os.close(); ois.close(); is.close(); socket....
//此处创建文件写入流的引用是要给ObjectOutputStream的构造函数玩儿 FileOutputStream fos = null; ObjectOutputStream oos = null; try { fos = new FileOutputStream(path); oos = new ObjectOutputStream...
ObjectOutputStream oos=new ObjectOutputStream(fos); //得到对象输出流 oos.writeObject(obj); //写入对象 oos.close(); //关闭对象输出流 fos.close(); //关闭文件输出流 System.out.println("写入...
在该方法中,首先通过FileInputStream和ObjectInputStream读取源文件对象,然后通过ObjectOutputStream将读取的对象写入备份文件中。这个简单的示例代码展示了如何使用Java序列化来实现一个文件备份工具的简单功能,...
程序使用了ObjectInPutStream和ObjectOutPutStream这两个文件输入输出流,利用这两个文件输入输出流,可以方便的直接将通讯记录对象直接写入文件中,另外为了方便添加和删除一条记录还使用了系统的对象数组类...
实现类的对象的序列化可以使用ObjectOutputStream,实现步骤如下: 创建ObjectOutputStream对象; 调用ObjectOutputStream的writeObject方法输出对象。 Java高级程序设计实战教程第五章-Java序列化机制全文共15页,...
oos = new ObjectOutputStream(fos); oos.writeObject(list); return true; } catch (IOException e) { e.printStackTrace(); } finally { if(oos != null){ try { oos.close(); } catch (IOException e) ...
◦public abstract void writeObject(ObjectOutputStream out); ◦public abstract void readObject(ObjectInputStream in); 要熟悉对文件,特别是文本文件的操作 如果读取文本文件,推荐使用BufferedReader ...
saveContactsToFile()方法使用FileOutputStream和ObjectOutputStream对象将通讯录数据写入文件中。如果写入失败,会抛出IOException异常。 addContact()方法用于添加新的联系人信息到通讯录中,并自动将更新后的...