JAVA-IO流

数据的读入写出,文件的上传下载

流:一连串流动的数据,以先进先出的方式进行传输-------->流就是管道

数据源 ------>IO------->目的地

数据源:数据的来源

目的地:数据流向的位置

流的分类:

操作单元分:

字节流:万能流

字符流:纯文本内容的传输

流向分:以程序为中心

输入流,输出流

功能分:

节点流:真实能读入写出的

功能流:增强节点流的功能提高节点流的性能

流之间是相辅相成的

InputStream字节输入流中最上层的父类

文件流:FileInputStream

文件字节输入流-------节点 流,字节流,输入流

字节数组流:ByteArrayInputStream

字节数组输入流------节点流,字节流,输入流

操作字节数组,数据源是字节输入,建议使用字节数组输入流

操作文件,数据源文件,建议使用文件字节输入流

OutputStream字节输出流

FileOutputStream 文件字节输出流--------->节点流

ByteArrayOutputStream 字节数组输出流------>节点流

步骤:

  • 构建流(指定目的地)
  • 读入写出 write( )
  • 刷出 flush( )
  • 关闭 close( )后打开的先关闭

注意:

在输出流写出的时候,如果目的地文件不存在,系统会自动创建目的地文件,如果目的地所在路径不存在抛出异常.

字节流实现文件拷贝

数据源------>输入流------>程序------->输出流------->目的地

步骤:

  • 构建流(输入,输出)
  • 读入写出 write( )
  • 刷出 flush( )
  • 关闭 close( )后打开的先关闭

字符流(纯文本数据)

通过字符流实现文件拷贝

reader 字符输入流

        FileReader文件字符输出流----------节点流

writer 字符输出流

        FileWriter 文件字符输出流----------节点流

功能流

使用:包裹节点流使用

缓冲流:Buffered -----加快节点流的读写效率

字节缓冲流:

        字节输入缓冲流:BufferedInputStream

        字节输出缓冲流:BufferOutputStream

如果没有新增方法就可以发生多态

字符缓冲流:

         字符输入缓冲流:BufferedReader

                新增功能:String readLine( );读一行文字

        字符输出缓冲流:BufferWriter

                新增功能:void newLine( );写一个分隔符/换行符.

存在新增功能不能发生多态

Data流

 Data流 | 基本数据类型流 : 读写数据+保留数据类型->基本数据类型|字符串
            是字节流的功能流
            DataInputStream     Data输入流
                新增功能 : readXxx()
            DataOuutputStream   Data输出流
                新增功能 : writeXxx()

       注意: 读入与写出的顺序保持一致
             读入数据的时候必须从源文件中读入,否则抛出异常 java.io.EOFException

 Object流|对象流|引用数据类型流


        字节流的功能流
        ObjectInputStream   反序列化输入流
            新增方法  Object readObject() 从ObjectInputStream中读取一个对象。  等等
        ObjectOutputStream  序列化输出流
            新增方法 void writeObject(Object obj) 将指定的对象写入ObjectOutputStream。

        序列化:

将对象数据转为可存储或者可传输的状态的过程
        不是所有类型的数据都能序列化 java.io.Serializable
            如果写出的对象类型没有实现序列化接口,会遇到运行时异常java.io.NotSerializableException
        序列化与反序列化顺序保持一致
        不是所有的属性都需要序列化 transient
        static的成员不会被序列化
        如果父类实现类序列化接口,子类所有内容都可以进行序列化
        子类实现了序列化接口,只能序列化子类独有的内容

        序列号:

当实现了序列化的类型默认存在一个序列号
        当类中的成员发生改变,序列号默认会重新生成
        作用: 使用序列号可以实现检查前后版本不一致问题

        解决不同版本的兼容问题: 手动设置序列号

        通过快捷键生成序列号:
            1.类型必须实现了序列化接口
            2.Setting中进行配置
            3.双击类名alt+enter,自动生成序列号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值