IO流笔记

1.IO分类

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

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

数据源:数据来源 目的地:数据流向的位置

数据源-----io流-----目的地

流的几种分类: 流之间的分类是相辅相成的

按操作单元分:

        1.字节流 :万能流

         2.字符流:纯文本内容

按流向分:以程序为中心

        1.输入流

         2.输出流

按功能分:

        1.节点流 :真实做到读入写出的

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

java.io包

InputStream 字节流中的最上层父类

文件流:FileInputStream 文件字节输入流

                操作文件 数据源为文件  使用文件字节输入流

字符数组流:ByteArrayInputStream  字符数组输入流

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


2.字节流输出流

OutputStream 字节流输出流

FileOutputStream 文件字节输出流 -> 节点流                         目的地为文件

ByteArrayOutputStream 字节数组输出流 -> 节点流                 目的地为字节数组

注意:在输出流写出时,如果目的地文件不存在,系统会自动创建目的地文件,如果目的地文件所在路径不存在,则抛出异常java.io.FileNotFoundException:(系统找不到指定的路径。)

四步走: 1.构建流:指定目的地

                                输入流/输出流

                2.读入写出

                3.刷出:

                4.关闭:(后打开的先关闭)


3.字节流实现文件拷贝

完整思路:

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

四步骤:如上

字符流(纯文本数据)

                    Reader  字符输入流

                        FileReader 文件字符输入流 ----->节点流

                     Writer 字符输出流

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


4.功能流

  使用:包裹节点流使用

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

                字节输入缓冲流  BufferInputStream

                字节输出缓冲流 BufferOutputStream

                             无新增方法,不可以发生多态       

                 字符缓冲流


5.字符流缓冲流(功能流)

      字符输入缓冲流 BufferedReader

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

      字符输出缓冲流  Bufferwriter

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


6.Data流

Data流  |  基本数据类型流:是字节流的功能流

   DataInputStream  Data输入流

                新增功能:readXxx()

    DataOutputStream  Data输出流

                新增功能:writeXxx()

注意:1.读入写出的顺序保持一致   2.读入数据的时候必须从源文件中读入

           2.读入数据的时候必须从源文件中读入否则抛出异常 java.io.EOFException


7.Object 流

对象流|引用数据类型流

ObjectInputStream  反序列化输入流

        新增方法  Object readObject() 从ObjectInputStream中读取一个对象

  ObjectOutputStream  序列化输出流
         新增方法 void writeObject(Object obj) 将指定的对象写入ObjectOutputStream。
 

序列化:将对象数据转化为可存储或者可传输的状态的过程

不是所有类型的数据都能序列化 java.io.Serializable

    如果写出的对象类型没有实现序列化的接口,会遇到运行时异常                        java.io.NotSerializableException

    序列化与反序列化顺序保持一致

    不是所有的属性都需要序列化  transient

   static的成员不会被序列化

   如果父类实现了类序列化接口则:子类所有内容都可以进行序列化

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值