IO02_字符流输入输出流

字符流:专门用来处理文本文件(能看懂的文本文件)
    Read:这个抽象类表示字符输入流的所有类的父类
    Write:这个抽象类表示字符输出流的所有类的父类
    OutputStreamWrite:文件字符输出流(具体的字符输出流实现类)
    OutputStreamWrite(OutputStream out)创建文件字节输出流写入文件

    注意:字符流构造中的参数不是具体的文件路径 而是字节流对象
        说明了字符流才具体的操作文件内容时,本质上还是通过字节流操作

    InputStreamReader:文件字符输入流(具体的字符输入流实现类)
    OutputStreamReader(OutputStream out)创建文件字节输入流读取文件

便捷字符流:
    通过OutputStreamWrite和InputStreamRead构造对象太繁琐,这里可以使用子类FileWrite和FileRead来构建对象
    使用方式:FileWrite(Stirng fileName)

    注意:FileWrite和FileRead不能指定编码表,只能使用默认的编码格式

字符缓冲流:针对于换行符有特殊的操作方式
    读readLine():可以一行读取(不包含换行符)
    写newLine():自动识别换行符,可以忽略具体的换行符号(\n | \r | \r\n)

    BufferedRead:从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。 可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。
    BufferedWrite:将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。 可以指定缓冲区大小,或者可以接受默认大小。 默认值足够大,可用于大多数用途。 
    构造方法:
    BufferedRead(Read in);
    BufferedWrite(Write out);

对象流:
    对象序列化:就是将对象保存到磁盘中,或者在网络中传输对象
    这种机制就是使用一个字节序列表示一个对象,该字节序列包含:对象的类型,对象中存储的对象详细信息
    字节序列写入到文件之后,相当于文件持久保存了一个对象的信息
    反之,改该字节序列也可以从文件中读取对象信息,称之为反序列化
    对象流:
        对象序列化流:ObjectOutputStream
        对象反序列化流:ObjectInputStream

注意:类想要实现序列化或反序列化必须实现Serializable

Serializable接口中什么都没有,只是一个标识,标识当前类可以进行序列化
    版本号的问题:
        序列化一个对象之后,类文件发生更改,
        会出现InvalidClassException:
        因为当序列化运行时检测到类中的以下问题之一时抛出。 
        类的串行版本与从流中读取的类描述符的类型不匹配 
        该类包含未知的数据类型 
        该类没有可访问的无参数构造函数 
        解决方案:
        在类中增加一个版本标识信息(序列化对象时,会由系统分配的版本标识)
        protected static final long serialVersionUID = 42L;

        成员变量如何不被序列化?
        给该成员加上一个transient关键字修饰,标识了该成员不参与序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值