一.IO
目的:读写文件中的内容
- 流:一连串流动的数据,先进先出的方式传输信息,管道
- 数据源 目的地–>以程序为中心划分读入写出
- 流的分类:
-
按照流向分:
-
输入流
-
输出流
-
按功能分:
-
节点流
-
功能流
- 分类之间是相符想成的,互不冲突
- 字节流:是万能的 ***** 功能:节点流
- InputStream 字节输入流 此抽象类是表示字节输入流的所有类的超类。
-
FileInputStream 从文件系统中的某个文件中获得输入字节。
- OutputStream 字节输出流
字节输出流 OutputStream 此抽象类是表示输出字节流的所有类的超类
FileOutputStream文件输出流是用于将数据写入 File
FileInputStream是输入流
***文件的拷贝
数据源 程序 目的地
关闭流:先打开的后关闭,后打开的先关闭
过滤条件
1.不能把文件拷贝到原文件所在路径下
例:
字符流 :只能读写纯文本内容 功能分:节点流
- Reader 字符输入流 FileReader 文件字符输入流
- Writer 字符输出流 FileWriter
注意:字符流拷贝图片会丢失数据导致图片打不开
因为字符流是读取字节后,缓存,然后去码表查找匹配,
若是匹配不到就会到位置码表位置寻找类似的,此时返回的数据就可能不正确。
因此生成的新图片的编码和老图片的编码是不一致的,从而导致图片不能正常显示
二. 字符流 字节流 -->节点流 - 包裹节点流,在节点流之上–>功能流|处理流
- 处理流:增强功能,提高性能的作用,在节点流之外才能使用,不能代替节点流
- 缓冲流:提高性能
- 字节缓冲流 BufferedInputStream BufferedOutputStream 无新增方法
三. 字符缓冲流 不能发生多态,因为存在新增方法
-
BufferedReader 字符输入缓冲流 新增方法 readLine() 读取一行
-
BufferedWriter 字符输出缓冲流 新增方法 newLine() 写出换行符