黑马程序员技术交流社区
标题:
字符流和字节流的问题
[打印本页]
作者:
张亚青
时间:
2013-3-21 11:00
标题:
字符流和字节流的问题
从API文档中可以看到如下解释:
FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。
FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。
【问题】FileInputStream就不能读取字符流文件吗?我试了一下,是可以的,请大虾们给详细解释下。
作者:
qintoko
时间:
2013-3-21 11:11
这个问题本质是在问字节流和字符流的区别:
字符 FileReader:一次读取二个字节
字节FileInputStream:一次读取一个字节
例:你现在要读一个汉字(以二个字节来存,既:一个字符)的“汉”。
1.用字符流读:一次读二个字节,那么你就可以完全读取到它,并存到你想存的地方。
2.用字节流读:一次读一个字节,那么你要读二次你才完全得读取到了这个汉字。
作者:
黑马-周科
时间:
2013-3-21 11:29
读取文本就用字符流, 其他都用字节流。
作者:
MyNameIs520
时间:
2013-3-21 12:07
Java最先是只有字节流(java1.0)的,字节流可以操作所有的JAVA文件,
但是为了
对文本文档的操作更效率
,产生了字符流(java1.1),字符流是在字节流+编码表的情况下产生的
字节流:一次读取一个字节,即是一个byte字节
使用: 直接对文件进行操作,不需要调用内存缓冲,也就不需要对输出流进行刷新,效率高。可操作任意类型的文件,譬如照片,多媒体等等的传输。
字符流:一次读取两个字节,即是一个char型字符
使用: 可以自定义一个缓冲数组,也可用JAVA封装好的缓冲。所以在写入完毕之后,需要通过刷新flush()方法将缓冲区的数据刷如文件中,一般用于文本类型文件的传输。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2