java学习之七(IO流下篇)

字符流(操作的是文本文件)
1)编码问题
2)认识文本和文本文件
java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)
文件时byte byte byte...的数据序列
文本文件是文本(char)序列按某种编码方案序列化为byte的存储结构
3)字符流(Reader Writer)
字符的处理,一次处理一个字符
字符的底层任然是基本的字节序列。
    InputStreamReader 完成byte流解析为char流,按照编码解析(默认项目编码)
    OutputStreamWriter 提供char流到byte流,按照编码处理
    InputStreamReader isr=new InputStreamReader(new FileInputStream(File file));
    OutputStreamWriter isw=new OutputStreamWriter(new FileOutputStream(File file));
    FileReader/FileWriter  直接操作文件(不能设定编码)
    FileReader fr=new FileReader(File file);
    FileWriter fw=new FileWriter(File file);
字符流的过滤器
    BufferedReader  --->readLine 一次读一行(不能识别换行)
    BufferedWriter/PrintWriter  -->写一行
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStreamReader(File file)))
BufferedWriter bw=new BufferedWriter(new InputStreamWriter(new FileInputStreamWriter(File file)))
PrinterWriter pw=new PrinterWriter(File file);
3.对象的序列化,反序列化
1)对象序列化,就是将Object转换成byte系列,反之叫对象的反序列化。
2)序列化流(ObjectOutputStream)---->writeObject()
  反序列化流(ObjectInputStream)--->readObject()
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(File file));
ObjectInputStream ois=new ObjectInputStream(new FileInputStream(File file));
3)序列化接口(Serializable)
  对象必须实现序列化接口,才能进行序列化,否则会出现异常,这个借口,没有任何方法,只是一个标   准
4) transient 修饰的元素不会进行jvm默认序列化,也可以自己完成这个元素的序列化
可以在类中重写writeObject 和readObject
  private transient int age;//不希望被jvm进行默认序列化的元素。
  private void writeObject(java.io.ObjectOutputStream s)
        throws java.io.IOException{
s.writeDefaultObject();
s.write(age);
}
   private void readObject(java.io.ObjectInputStream s)
        throws java.io.IOException, ClassNotFoundException {
s.defaultReadObject()
this.age=s.readInt()
}
5)序列化  父类如果实现了序列化接口,子类就不用实现序列化接口了
对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被 调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值