目录
FileInputStream 输入流 读取代码 读取一次 移动一次指针
编辑 3.字符流 底层用的是字节流 一次读取一个字节 遇到中文 一次读取多个字节
一、为什么会出现IO流
内存不能永久化存储,程序停止 ,数据就会丢失
使用IO流 将内存中的数据 保存在硬盘中
输出流--->从程序到文件(磁盘) outputStream writer
输入流--->从磁盘到程序 inputStream reader
二、FIle的作用 与IO流的作用
File可以查看文件信息,删除文件,创建文件,但是不能读写文件内容
--->只能对文件本身进行操作 不能读写文件里存储的数据
IO流的出现 可以读写文件内容
三、IO流的读写方向 参照物
程序运行在内存中 程序对磁盘进行读写
四、IO流的分类
分为 输入流、输出流 字节流 字符流
纯文本文件--->能用记事本打开的,能读懂的文件(不是乱码的文件eg:txt、md文件)
txt、md文件可以用字符流 excel文件、word文件只能用字节流
五、IO流体系
六、实现类
1、文件输入、输出流
FileOutputStream 输出流 写入代码
实际操作
如果文件不存在 ,会先创建这个文件,才会输出 --->从程序输出到磁盘
如果文件已经存在,会先清空文件,才会输出
write方法写入数字 会变成对应的ACII值
FIleOutputStream写数据的3种方式
换行与续写
FileInputStream 输入流 读取代码 读取一次 移动一次指针
边读边写 一次读写一个字节
边读边写 一次读写多个字节 read方法重载
文件拷贝 5m/次
try..catch的异常处理
字节流读取文件时,文件中不要有中文,如果有中文,会出现乱码
2、GBK与ASCII码 Unicode:万国码
一个中文字符占两个字节,一个英文字母 占一个字节
3.字符流 底层用的是字节流 一次读取一个字节 遇到中文 一次读取多个字节
FIleReader
FileWriter![](https://img-blog.csdnimg.cn/4d0fb9beac58406eb522088f1cadc97f.png)
代码演示:
字符流原理解析:
为什么会出现乱码?
1.读取数据时未读完整个字
2.编码和解码时的方式不统一
字节流和字符流的使用场景:
字节流:拷贝任意类型的文件 ------>拷贝文件
字符流:读取纯文本文件中的数据,往纯文本文件中写出数据
拷贝文件案例:
字符流的原理解析:
缓冲流:bufferedInputStream
缓冲流的默认空间大小是8192 所以效率比基本流InputStream要高 底层用的是基本字节流
字节缓冲流 一次读写多个字节
字节缓冲流提高效率的原理:
内存中数据传输的速度很快,不会提高效率,真正提高效率的是与硬盘之间交换数据的效率
字符缓冲流:
字符流本身自带缓冲区,字符缓冲流本身不能提升多少效率
但是字符缓冲流有两个特有的方法:
转换流:
最终版本,包含字节流,转换流,缓冲流
序列化流:
将文件序列化到磁盘
打印流:
常用工具包:
Commons-io: