以下所有学习基于本图:
Java文件读写分两类,字节流和字符流。
两者最大区别为缓冲区。
字节流:不用缓冲区,直接操作文本。InputStream/OutputStream
字符流:字符在缓冲区形成,然后操作文本。 Reader/Writer
综合对比详解:Java的字节流,字符流和缓冲流对比探究
接下来拣两个见过的比较一下。
1.字符流
BufferedReader/Writer
有8192字节缓冲区,读入先放缓冲区,不够从源文件读;写的时候先放缓冲区,溢出了再一股脑往文件里写。
适合一行一行读。
InputStreamReader/OutputStreamWriter
将字节流转化为字符流,可以指定编码格式,默认GBK。
由于文件都是以字节形式存储的,所以经常BufferedReader套InputStreamReader,再套字节流输入输出(怎么又是套娃
2.字节流
FileInputStream/OutputStream
读写文件的字节流。调用输入文件名,可以抛没读到的异常。常用API:read方法,可以读一个字节。Input详解 Output详解
*FileReader=InputstreamReader+FileInputStream
FilterInputStream/OutputStream
BufferedInputStream/OutputStream
带缓冲区的字节流,效率通常高一点。
DataInputStream/OutputStream
用来读写各种各样的数据类型,比如int、double、UTF等等。
ObjectInputStream/OutputStream
和序列化有关,用来读取对象。
先这样,后面具体用了再补充。