字节打印
打印流分类:
字节打印流:PrintStream println
字符打印流:PrintWriter println
打印流的特点:
1.只负责输出数据,不负责读取数据
2.永远不会抛出IOException
3.有自己的特有方法
对象序列化流
介绍:
1对象序列化:就是将对象保存到磁盘中,或者在网络中传输对象
2就是使用一个字节序列表示一个对象
4.字节`序列写到文件之后,相当于文件中持久保存了一个对象的信息
5.对象序列化流:ObjectOutputStream
6.将Java对象的原始数据类型和图形写入OutputStream,可以使用ObjectInputStream读取(重构)对象.
7.注意事项:
(1).一个对象想要被序列化,该对象所属的类必须实现Serializable接口
(2)Serializable是一个标记接口,实现该接口,不需要重写任何方法
对象反序列化流
ObjectInputStream
方法:Object read Object
seriaVersionUID
用对象序列化流序列化了一个对象后,假如我们修改了对象所属的类文件,读取数据会不会出问题呢?
会出问题,会抛出InvalidClassException异常
如果出问题了,如何解决呢?
重新序列化
给对象所属的类加一个serialVersionUID
private static final long serialVersionUID = 42L;
transient
如果一个对象中的某个成员变量的值不想被序列化,又该如何实现呢?
给该成员变量加transient关键字修饰,该关键字标记的成员变量不参与序列化过程
Properties作为Map集合的使用
是一个Map体系的集合类
可以保存到流中或从流中加载
属性列表中的每个键及其应对的值都是一个字符串
特有方法
Object setProperty(String key, String value) 设置集合的键和值,都是String类型,底层调用 Hashtable方法 put
String getProperty(String key) 使用此属性列表中指定的键搜索属性
Set<String> stringPropertyNames() 从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串
与IO流结合的方法
void load(InputStream inStream) 从输入字节流读取属性列表(键和元素对)
void load(Reader reader) 从输入字符流读取属性列表(键和元素对)
void store(OutputStream out, String comments) 将此属性列表(键和元素对)写入此 Properties表中,以适合于使用 load(InputStream)方法的格式写入输出字节流
void store(Writer writer, String comments) 将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式写入输出字符流 |
|