IO总结(七)
2013-10-20 17:18
190 查看
画图程序中画出一个矩形,保存到电脑硬盘中,下次打开这个文件这个矩形还是在原来的位置上。显然矩形的位置信息被保存了下来。
这个矩形的信息是怎么保存到硬盘中的呢?在内存中new一个矩形对象,里面保存着这个矩形对象的各种属性。
如果分别将这些属性写到硬盘的话是非常麻烦的,利用Object流就可以一次性将这个矩形对象写进去。类似地,有些游戏可以存盘,也是这个原理。
Object流
直接将Object写入或读出。
例子:
输出结果:
666 777 0
说明:
1)Serializable接口是标记性接口(给编译器看,编译器看到这个标记,它就知道对象可以序列化)
没有方法。(将对象转化为字节流读写就叫序列化)
2)transient(透明的)关键字 修饰的成员变量序列化时不予考虑。
补充:
externalizable接口(控制序列化过程)
java中IO这一部分就先总结到这。
这个矩形的信息是怎么保存到硬盘中的呢?在内存中new一个矩形对象,里面保存着这个矩形对象的各种属性。
如果分别将这些属性写到硬盘的话是非常麻烦的,利用Object流就可以一次性将这个矩形对象写进去。类似地,有些游戏可以存盘,也是这个原理。
Object流
直接将Object写入或读出。
例子:
import java.io.*; public class TestObjectIO { public static void main(String args[]) throws Exception{ Ex t = new Ex(); t.k = 999; FileOutputStream fos = new FileOutputStream("F:\\fff.dat"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(t); oos.flush(); oos.close(); FileInputStream fis = new FileInputStream("F:\\fff.dat"); ObjectInputStream ois = new ObjectInputStream(fis); Ex tt = (Ex)ois.readObject(); System.out.println(tt.i + " " + tt.j +" " + tt.k); } } class Ex implements Serializable{ private static final long serialVersionUID = 1L; int i = 666; int j = 777; double d = 2.3; transient int k = 888; }
输出结果:
666 777 0
说明:
1)Serializable接口是标记性接口(给编译器看,编译器看到这个标记,它就知道对象可以序列化)
没有方法。(将对象转化为字节流读写就叫序列化)
2)transient(透明的)关键字 修饰的成员变量序列化时不予考虑。
补充:
externalizable接口(控制序列化过程)
java中IO这一部分就先总结到这。
相关文章推荐
- Java学习总结之IO
- IO字符流总结
- Java IO总结
- 数据库随机IO优化总结
- IO多路复用总结:select pool epoll
- 详解Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- 标准库IO总结
- JavaIO-JavaIO总结
- libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)问题总结
- Java IO 流 总结
- IO常用流对象总结
- IO模式设置网络编程常见问题总结
- IO多路复用之select总结
- android 常用io操作总结
- IO总结
- APUE文件IO总结,文件描述符、原子操作
- JAVA IO之管道流总结
- IO操作课程总结及思考
- java.io 序列化 总结(一)---Serializable 和 Externalizable 的区别与联系
- java IO总结之字符流操作控制台输入输出(高效)