黑马程序员技术交流社区

标题: 学习IO流操作的小问题 [打印本页]

作者: 白倩    时间: 2011-10-28 14:56
标题: 学习IO流操作的小问题
字符流和字节流是不是都可以操作纯文本文件?
作者: 黄健    时间: 2011-10-28 15:17
都可以操作存文本文件,只是读取的方式不同,字符流提供按字符读写的方法,字节流提供按字节读写的方法。其实字符流最终还是以字节来读写文本文件(因为计算机中的文件都是以二进制数存在的),平时处理文本文件的情况很多,为了方便使用,就提供了以字符形式读取的方法。
作者: 郭敏    时间: 2011-10-28 15:18
都可以操作,一般情况下都使用字符流读写纯文本,效率高!
作者: 张振宁    时间: 2011-10-28 15:23
都能,一般情况文本用字符流,其他的比如 音乐,图片用字节流。。
作者: 绿影    时间: 2011-10-28 20:51
这个问题如同问高速路上能不能跑拖拉机,理论上当然可以。不过,基于效率上考虑现实上应该比较少干。除非特定用处。呵呵!
作者: 邱本超老师    时间: 2011-10-30 22:33
都可以操作纯文本的,字节流与字符流主要的区别是他们的的处理方式
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化
这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联
在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的
在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang
而在字符流转化为字节流时,实际上是String转化为byte[]时,
byte[]    String.getBytes(String charsetName)
也是一样的道理
至于java.io中还出现了许多其他的流,按主要是为了提高性能和使用方便,
如BufferedInputStream,PipedInputStream等
作者: 黄晓天    时间: 2011-10-30 22:51
原则上字节流和字符流都可以处理文本文件,但是考虑到效率问题,处理文本文件一般用字符流,而当处理图片、视频等格式的文件时,进而选择字节流
作者: 黄晓天    时间: 2011-10-30 22:54
原则上字节流和字符流都可以处理文本文件,但是考虑到效率问题,处理文本文件一般用字符流,而当处理图片、视频等格式的文件时,进而选择字节流
作者: 李建雄    时间: 2011-10-30 22:59
是的,字节流和字符流都可以操作纯文本文件,
字节流还可以操作其他文件,比如:图片,电影

如果是纯文本文件,一般选择字符流, 我想可以是因为它比字节流效率高,而且比较符合使用习惯
还有就是,先出现的是字节流,而字符流是出现在字节流的基础之上,字符流里面有编码表,它把字节转换成了字符,
从某种意义上说,字符流比字节流先进, 想一想:后出现的一般会比前出现的好!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2