简介:
IO流分为两种:一为字节流,二为字符流
字节流可以读取任何文件,字符流适用于读取中文;字符流出现的最大的好处就是用来解决字节流读取中文的一些弊端。
字节流之下又分为:基本流(FileInputStream,FileOutputStream),缓冲流(BufferedInputStream,BufferedOutputStream),反序列化流(ObjectInputStream,ObjectOutputStream)
字节流之下又分为:基本流(FileReader,FileWriter),缓冲流(BufferedReader,BufferedWriter),转化流(InputStreamReader,OutputStreamWriter)
基本流:
字符流的基本流与字节流基本流最大差别是没有缓冲区,这就导致了字节流的读取效率没有字符流的效率高。
字节流中的read()方法,可以传一个数组去创建一个小的缓冲区用来提高字节流基本流的读取效率
基本流使用细节:
字节和字符的基本输入流,在创建的时候要保证路径正确,这样内容读取才不会出问题。
字节和字符的基本输出流,在创建的时候要保证路径正确,如果你没有去创建文件夹或者文件,那么输出流会按这你给的路径去创建相对应的文件或文件夹;在输出流输出的那个文件,如果有内容,你没有开启续写的功能的话,他会清空那个文件之后在进行输入;在字符输出流因为存在缓冲区,当你对文件内容清空后,你再进行读取时会发现还有数据,这是因为清空只是针对于按个文本,对缓冲区并没有任何影响。
缓冲流:
字节和字符的缓冲流,提升了读取效率,特别是字节,字节基础流就是因为没有缓冲区才导致的读取慢;但对于字符流并没有显著的提高,因为字符流的基本流有缓冲区。
大多数情况下我们使用的缓冲流,处于两个原因:1.读取速度2.由于有一些特殊的方法、
反序列化流:
反序列化流是字节流的高级流,他最主要的作用就是用来加密数据,由反序列化流写出的数据是人无法读懂,所以可以将自己不想给别人看的东西通过反序列化流进行加密,反序列化流针对是对象。当你要看反序列化流写出的东西时,就用反序列化的输入流,她会把数据解密;
转化流:
转化流时字符流的高级流,它的作用时将字符流和字节流进行转化,在开发过程中会遇到,在字符流中要求你用字节流,这时转化流就起到作用了
打印流
作用:打印流可以实现方便、高效的打印数据到文件中去。打印流一般是指:PrintStream(属于字节流),PrintWriter(属于字符流)两个类,可以实现打印什么数据就是什么数据,例如打印整数97写出去就是97,打印boolean的true,写出去就是true
PrintStream和PrintWriter的区别
1.打印数据功能上是一模一样的,都是使用方便,性能高效(核心优势)
2.PrintStream继承自字节输出流OutputStream,支持写字节数据的方法。
3.PrintWriter继承自字符输出流Writer,支持写字符数据出去。
压缩流:
负责压缩文件或者文件夹
解压缩流:
负责把压缩包中的文件和文件夹解压出来
IO框架:commons-io
1.commons-io是apache开源基金组织提供的一组有关IO操作的类库,可以提高IO功能开发的效率
2.commons-io工具包提供了很多有关io操作的类。有两个主要的类FileUtils, IOUtils