Java常用API-io流

312 阅读2分钟

1.出现的原因:

  • 需要有一个东西来将数据写入文件,或者将文件中的数据获取使用

2.解释IO流

  • 全称:input output Stream --输入输出流
  • 数据的流动形态与水流相似,故称为io流
  • 为什么有输入输出流?
    • 参照物:内存
    • 输入流:其他存储介质数据到内存
    • 输出流:内存到其他存储介质数据
    • 其他存储介质:硬盘,u盘,光盘,网盘等等

3.Java提供的类:

  • 输入输出流
    • 输入流:inputStream和Reader
    • 输出流:outputString和Writer
  • 数据类类型
    • 字节流【按字节处理数据】:InputStream,outputStream
      • 处理:图片,声音,视频等
    • 字符流【按字符处理数据】:Reader,Writer
      • 处理:文本
    • 包装流【缓冲】:Buffered+对应的流
    • 转换流:InputStreamReader,OutputStreamWriter
    • 打印流:PrintWriter

4.字节流的输入和输出

  • 1)输入:InputStream 抽象类 java.io

    • 所有字节输入流的超类
    • FileInputStream:文件输入流,文件资源的读取,主要读取图片等原始字节字样
      • 用法:普通的类,给定构造方法,没有静态方法,创建对象调用方法
    • 使用步骤:
      • 1.创建流对象
      • 2.定义缓冲数组--指定每次读取多少字节,不指定,每次读取一个字节
      • 3.读取数据--使用循环
      • 4.处理数据
      • 5.关闭流
    • 键盘输入的操作--使用输入流模拟Scanner
  • 2)输出:OutputStream 抽象类

    • 含义:将数据以字节的方式发送出去
    • 子类:FileOutputStream
    • FileOutputStream:将资源写入文件

5.字符流的输入输出

  • 用于文本的数据处理
  • 输入流:
    • Reader:读取字符 抽象类 子类:FileReader
    • FileReader类:读取文本文件数据
  • 输出流:
    • Writer:写出字符流 抽象类 子类:FileWriter
    • FileWriter:文本的写出

6.包装流-缓冲流

  • 建立缓冲区,以便于提高续写速度
  • 类:BufferedWriter,BufferedReader,BufferedInputStream,BufferedOutputStream
  • 总结:加了缓冲区之后除了ufferedReader类,其他的操作基本没有变化

7.转换流

  • InputStreamReader,OutputStreamWriter
  • 字节流转化为字符流,进行高效方便操作

8.对象流----序列化

  • 序列化:格式化----按照一定格式规范进行存储,需要统一标识
  • 存储的对象对应的类必须实现序列化接口----java.io.Serializable
    • 提供了两个类:ObjectInputStream,ObjectOutputStream

9.文件存储数据

  • 虽然解决了持久化存储数据的问题,但是读取数据不方便,筛选数据麻烦
  • 文件存储数据不安全