A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马李刚 黑马帝   /  2011-9-7 17:46  /  1914 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

IO流中的字节流(FileInputStream, FileOutputStream)也能操作文本文件,字符流(FileReader, FileWriter)还有存在的意义吗?

6 个回复

倒序浏览
字节流处理单元为1个字节,操作字节和字节数组。
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串。
所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;
字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
总的来说:
字符流 FileReader FileWriter 主要用于处理文本格式的文件
字节流 FileInputStream FileOutputStream 主要用于处理二进制文件。
二进制文件和文本文件的区别:
如果一个文件专用于存储文本字符,而没有包含字符以外的其它数据,就称为文本文件;除此之外的文件就称为二进制文件
[ 本帖最后由 郭亚飞 于 2011-09-07  18:26 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-7 18:33:56
藤椅
IO流中的字节流(FileInputStream, FileOutputStream)可以输入输出英文与数字,但如果输出汉字的话 就可能会出现乱码问题,比果你开辟的byte[]组数空间是奇数的话 传入一段中文汉字的话 就很有可能出现乱吧 因为一个汉字是要占两个字节的 还有些情况 你用循环的方式来输入输出 每次如果也只读一个字节的话  一个汉字占两个字节 ,计算机会把汉字拆开来输入输出 这样一定会出现乱码……所以要用到字符流 当然 有很多种方式来避免乱码的产生 但这也必不可少的会用到字符流……

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-11 00:47:46
板凳
字符流 FileReader FileWriter 主要用于处理文本格式的文件
字节流 FileInputStream FileOutputStream 主要用于处理二进制文件。

FileInputStream,FileOutputStream 流都是用来处理字节的,FileOutputStream 并不能直接处理文本文件,需要把它转化成字节才能写入文件,FileInputStream读取的也是字节,然后转化成需要的类型(比如:字符串)。

而FileReader FileWriter 可直接用来处理文本文件,简化了字符串的输入输出。相对于FileInputStream FileOutputStream 来说,FileReader FileWriter 省略了字符串和字节的转化过程,更加有利于程序的简洁性。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-11 02:08:15
报纸

回复 沙发 的帖子

那用字符流方式直接读二进制文件可以吗?我记得是可以的。
本来一个字节就是一个数据,现在读一个字符即两个字节就翻译,不就出错了吗???????
回复 使用道具 举报
黑马网友  发表于 2011-9-11 14:42:38
地板
字节流确实可以操作文本文档,但是如果用字符流来操作文档会更加方便,更加快速。
回复 使用道具 举报
黑马网友  发表于 2011-9-12 23:58:04
7#
补充:关于IO这块分字节和字符,锁对应的方法我归纳了一下
字符流(默认编码表)             字节流
FileReader               FileOutputStream
FileWriter               FileInputStream

BufferedReader           BufferedOutputStream
BufferedWriter           BufferedInputStream
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马