文件IO
1.1 IO流介绍
I(输入) O(输出), IO流就是输入输出流,这个叫法是根据参照物不同,称呼也不同,比如我们以程序为坐标.我们开发项目的时候可能会依赖于其他文件, 或者需要将程序的数据写到磁盘上,这个时候我们就需要使用到IO流
1.2 Java中IO流体系
1.3 字节流和字符流的区别
字节流 : 可以处理任意类型的数据,比如文本,图片,视频等类型的数据
字符流 : 只能处理纯文本数据
总结 : 如果你要处理的数据是纯文本优先考虑字符流,其他情况一概字节流
1.4 为什么有字符流
防止文字乱码
二. 字节流
2.1 字节输入流
使用字节流读取文件,使用FileInputStream对象中的read方法,返回值是int类型,封装的就是读取的字节数,如果返回-1说明该文件读取完毕。使用的时候一般使用第二个方法,一次可以读取多个字节,速度要快点。
2.2 字节输出流
使用字节流向文件中写入数据,使用 FileOutStream 对象中的write方法
注意:
1)中文乱码:这里需要设置编码表
原因:将文字转换成字节,需要根据码表转换,这个过程是编码,使用的时候需要将字节转换成文字,这个叫解码,如果两个过程使用的码表不一样就会乱码。
String str = new String(b,“GBK”);
2)写数据多字节:我们在写的时候规定读多少字节写多少即可
2.3 缓冲流
为了提高对数据的读写效率我们可以使用缓冲技术,Java给我们提供了两个类BufferedInputStream和BufferedOutputStream,这两个类是基于装饰模式实现,我们在使用的时候传入普通的字节流即可。
三 . 字符流
3.1 简介:
我们使用字节流操作文本的时候可能出现乱码,推出了字符流,专门用来处理纯文本数据
3.2 总结
我们在使用字符流操作文本数据时可以直接使用BufferedReader和BufferedWriter,前者可以一次读一行,返回String类型数据,后者可以直接写一个String’类型的字符串并且可以通过newLine方法进行换行,注意flush方法刷新流中的数据。
四. 打印流
PrintWriter:打印流,只能向外输出数据,就是一个输出流,可以将文本原封不动输出,我们在JavaWeb程序中使用的response.getWiter(),返回的对象其实就是PrintWriter。