转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827509.html
Java的IO流体系十分庞大,并且体系层次稍复杂,很容易记混或记错。在此,我把平时经常用到的几个流类的简易区分以及体系层次整理出来,方便记忆与辨析。本人对IO了解尚浅,文章如有错漏,恳请前辈指正,感激不尽!
字节流体系:
基类:InputStream/outputStream(抽象类,不能new)
子类:
文件IO字节流:FileInputStream/FileoutputStream:最常用,复制文件、转移文件、读写文件等都可以用到。
音频IO字节流:AudioInputStream/AudiooutputStream
......
字符流体系:
基类:Reader/Writer(抽象类,不能new)
字符流类:InputStreamReader/OutputStreamWriter:参数是inputstream/outputStream以及编码方式,主要实现字节流转化成字符流。
文件字符流:FileReader/FileWriter:参数是文件名,主要用来读写文本。
缓冲字符流:BufferedReader/BufferedWriter:也用于读写文本,带缓冲,效率更快。
......
缓存的原理:
读取:
Buffered:自动从硬盘中先抽取一部分内容到内存,这样,在读写时对内存IO速度更快。
一般IO流:直接从硬盘读取内容,速度较慢。
写入:
Buffered:先写入内存,在close()时或显式执行flush()时把内容刷到硬盘
一般IO流:直接对硬盘进行写入