1.出现的原因:
需要有一个东西来将数据写入文件,或者将文件中的数据获取使用
2.解释IO流
中文:全程input output Stream---输入输出流
为什么是流?
因为数据的流动形态---与水流相似
为什么有输入输出流?
参照物:内存
输入输出流:其他存储介质数据到内存--输入流
内存到其他存储介质数据--输出流
其他存储介质
硬盘 优盘 光盘 网盘 网络
3.Java给我们提供的类有哪些分类说明
输入输出
输入流:InputStream和Reader
输出流:outputString和Writer
数据类类型
字节流【按字节处理数据】InputStream outputStream
处理:图片 声音 视频等
字符流【按照字符进行数据处理】:Reader和Writer
处理:文本
包装流【缓冲】:Buffered+对应的流
转换流:InputStreamReader OutputStreamWriter
打印流:PrintWirter
4.字节流的输入输出
1)输入:InputStream 抽象类
所有字节输入流的超类
键盘输入流
FileInputStream 文件输入流
FileInputStream:文件资源的读取 主要读取图片等原始字节文件
用法:
普通的类 给定构造方法 没有静态方法 创建对象调用方法
使用步骤:
1.创建对象
2.定义缓冲数组--指定每次读取多少字节 不指定 每次读取一个字节
3.读取数据--使用循环
4.处理数据
5.关闭流
键盘输入的操作---使用输入流模拟Scanner
2)输出流:OutputStream抽象类
含义:将数据以字节的方式发送出去
子类:FileOutputStream
FileOutputStream:将内容写入文件
5. 字符流的输入输出
用于文本的数据处理
输入流:
Reader:读取字符 抽象 子类:FileReader
FileReader:类 读取文本文件数据
输出流:
Writer:读取字符 抽象 子类:FileWriter
FileWriter:文本的写出
6.包装流【缓冲流】
建立缓冲区,以便于提高续写速度
类:BufferedWrier BufferedReader
BufferedInputStream BufferedOutputStream
总结:加了缓冲区之后除了BufferedReader类,其他的操作没有什么变化
7.转换流
InputStreamReader OutputStreamWriter
字节流转换成字符流,进行高效方便操作
8.对象流--序列化
序列化:格式化--按照一定格式规范进行存储,需要统一标识
存储的对象对应的类必须实现序列化接口---java.io.Serializable
提供了两个类
ObjectinputStream ObjectoutputStream
重点:对象流和文件流
后面使用流处理文件资源的时候,记得使用包装流打包
9.文件存储数据
虽然解决了持久化存储数据的问题,但是读取数据很不方便,筛选数据麻烦
文件存储数据不安全
后期会有技术解决--第三方好事之徒--开发一款软件--数据可软件
数据处理存储方便