黑马程序员技术交流社区

标题: IO流复制文件 [打印本页]

作者: yangfengxiao    时间: 2012-9-30 16:26
标题: IO流复制文件
本帖最后由 yangfengxiao 于 2012-9-30 16:27 编辑

当复制文本文件时,优先选择用字符流。

复制非文本文件时,一定要使用字节流。

问题是,可以用字符流+转换流来复制非文本文件吗~~

理解不深,请帮忙~~~
作者: 宫明星    时间: 2012-9-30 17:38
可以的。你看到后面就会知道,字符流+转换流是很常见的。
作者: 谭立文    时间: 2012-9-30 18:15
可以,但是我觉得没有必要,明明你直接用字节流去读写流媒体文件就好了,为什么要自己给自己找麻烦,中间要加一个字符流呢?但是既然存在转换流,肯定是有其道理的,但是要用到恰大好处,千万别画蛇添足了,这只是我的一己之见,希望对你有帮助。
作者: 刘明月    时间: 2012-9-30 20:44
这个确切的说是你对转换流的理解不深
转换流的产生,
转换流的作用,
什么时候使用转换流,
弄清楚了,你也就知道可不可以了
作者: yangfengxiao    时间: 2012-9-30 20:54
刘明月 发表于 2012-9-30 20:44
这个确切的说是你对转换流的理解不深
转换流的产生,
转换流的作用,

那你给我讲讲呗
作者: 刘明月    时间: 2012-9-30 20:56
yangfengxiao 发表于 2012-9-30 20:54
那你给我讲讲呗

忘了,我先去看看
作者: 叶征东    时间: 2012-9-30 21:17
我觉得还是字节流比较好用点


作者: 佘天宇    时间: 2012-10-1 11:25
复制非文本时,如MP3,
字符流是可以复制的,但是复制完的图片有可能打开看不了,
MP3不是以字符方式编码的,文件有自己的编码方式,但是你并不知道,所以只能以最小的,只能以字节流最小单位的读取方式读取。
转换流也是同样的道理,编码方式不知道。

至于其他的还有每个文件都有自己的消息头信息,如果读的还有其他信息,可能和你读取文件的消息透信息拼接在一起,这样就不知道文件头的起始位置,读的时候就会乱码。
所以不要用字符流拷贝媒体文件,字符流只用来处理文字数据。

这种理解,希望能给你帮助
作者: 崔朋朋    时间: 2012-10-1 16:41
本帖最后由 崔朋朋 于 2012-10-1 16:43 编辑

转换流InputStreamReader、OutputStreamWriter都是把 字节流 转换成 字符流。也就是说在使用转换流之前,你必须要有字节流。
楼主是要用字符流+转换流来读写非文本文件,没有字节流,那就肯定不能用转换流了。除非你用字节流+转换流+字符流来复制非文本文件,这样的不仅麻烦,还会产生复制后的文件打不开的问题(编码方式不同造成的),还不如直接用字节流就行了。

总之,记住:
读写文本文件,用字节流+转换流或者是字符流,当然优先选用字符流;但当读写非文本文件时,如图片、音频、视频等,要选用字节流






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