首先了解几个概念:
1.文件在硬盘上的存储形式,它是以byte byte byte。。。存储的,比如常见的文本文件,声音视频文件,图片都是以字节的形式存储的,是数据的集合。
2.java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码),文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果。
3.什么是流?流:是一组有起点,有终点的字节序列的集合,根据数据的传输特性,将流抽象为各种类,方便进行数据的操作,java中把不同的输入输出抽象为流。
流大致分为以下几类:字节流,字符流(数据类型);输入流,输出流(数据方向);节点流,处理流(数据功能);
4.字节流:数据流中最小的单元是字节(1个字节=8位/bit).
字符流: 数据流中最小的单元是字符,java中字符是Unicode编码,一个字符占两个字节(1个字符=2个字节=16位/bit)。
5.字节流和字符流的区别:
a.上面的第4条。
b.字节流操作时本身不会用到缓冲区,是文件系统自己的操作。
字符流用到了缓冲区,这就是为什么在用字符流做读写操作时要刷新缓冲区,其实质就是写数据到文件。
c.字节流基类:InputStream,OutputStrem
字符流基类: Reader,Writer
6.写程序时应首选字节流,因为硬盘上文件都是以字节形式存储的。
----------------------------------------------------------------------------------------------------------------------
java中关于io类的具体操作多查阅API: Oracle API 7
原文:http://www.cnblogs.com/zhangygl/p/4296663.html