Java中的IO补充

3.字节流实现文件拷贝 :
    数据源---文件字节输入流--->程序---文件字节输出流---->目的地
    步骤 :
        1.建立联系(数据源,目的地)
        2.构建流(文件字节输入流 文件字节输出流)
         3.读入写出
        4.刷出
        5.关闭
4.字符流实现文件拷贝 :   只能拷贝纯文本文件
    字符输入流 : Reader
    文件字符输入流  FileReader
    字符输出流 : Writer
     文件字符输出流  FileWriter
5.功能流 : 加强节点流的功能,提高节点流的性能
    必须包裹节点流进行使用
     缓冲流 : 加快读写效率  Buffered
        字节缓冲流: 提高字节流节点流读写效率
             字节输入缓冲流BufferedInputStream : 缓冲字节输入节点流
            字节输出缓冲流BufferedOutputStream : 缓冲字节输出节点流
            以上两个类型没有新增方法,可以发生多态
        字符缓冲流 : 提高字符流节点流读写效率
            字符输入缓冲流BufferedReader : 缓冲字符输入节点流
             新增方法 : String readLine()  读取一行文本。
            字符输出缓冲流BufferedWriter : 缓冲字符输出节点流
            新增方法 : void newLine()  写入行分隔符。
     Data流 : 数据流 | 基本数据类型流
        能够让节点流在读写数据的同时读写其数据类型(基本数据类型|String)
        是字节流的功能流
         DataInputStream : 修饰字节输入节点流
             新增方法 :  xxx readXxx() 读取对应类型的数据返回
        DataOutputStream : 修饰字节输出节点流
            新增方法 : void writeXxx(xxx) 写出XXX类型的数据
        注意 : 读入与写出的顺序需要保持一致
            java.io.EOFException 当通过数据输入流读取时候,类型不匹配,或者不是读入源文件都有能遇到的异常
     对象流 : Object
        读写对象数据
        字节流的功能流
        序列化 :
             将对象转为可存储或者可传输的状态的过程
             序列化输出流 : ObjectOutputStream
                新增方法 : final void writeObject(Object obj) 将指定对象写入 ObjectOutputStream。
            反序列化输入流 : ObjectInputStream
                新增方法 : final Object readObject() 从 ObjectInputStream 中读取一个对象。
            注意 :
                       需要先序列化后反序列化
                        不是所有类型的对象都能序列化   java.io.Serializable
                        不是所有的属性都需要序列化 transient
                        静态属性不会被序列化
                        如果父类实现了序列化接口,子类没有实现,子类可以序列化所有的内容
                        如果父类没有实现序列化接口,子类实现了,子类只能序列化子类独有的内容
        序列号 : 在实现了序列化的类型中必会存在一个序列号,如果显示提供了以自定义的为主,如果没有显示提供,会存在默认的序列号
             作用 : 可以实现检测前后版本一致问题
             因为当类中的成员存在变动,如果是显示自定义的序列号没有影响,但是如果使用的是默认提供的序列号,会自动更新
        实现前后版本兼容问题 :
            手动提供序列号
         可以通过idea快捷键自动生成序列号 :
            1.类实现序列化接口
             2.settings设置
            3.选中类名->alt+enter->生成序列化字段
File src = new File("D://AAA/test2.txt");
        File dest = new File("D://AAA/test4.txt");
        //2.构建流(文件字符输入流   文件字符输出流)
        FileReader rd = new FileReader(src);
        FileWriter rt = new FileWriter(dest);
        //3.读写
        char[] car = new char[1024];
        int len = -1;
        while((len=rd.read(car))!=-1){
            rt.write(car,0,len);
        }
        //4.刷出
        rt.flush();
        //5.关闭
        rt.close();
        rd.close();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值