如题,比如传一个mp3或者电影啥的,如果用字符流传递的话,总会少那么几个字节,导致文件无法运行?问什么会出现这种情况?
虽然我知道这些非文本文件本身就是以字节存储的,但是我能否先用字符传输,只要把所有信息传过去就行了呀,真让我很费解,各位大侠能否为小弟解除疑惑?

解决方案 »

  1.   

    字符串文件结束的标志与数据流结束的标志不一样。
    字符串文件结束的标志的ASCII值是-1,如果使用字符串去传递数据流,在扫描数据流时,发现-1就认为应该结束了,后面的内容就会被抛弃。以前对此呈使用C++做过测试。
      

  2.   

    看一下这篇文章就明白了:http://www.cppblog.com/biao/archive/2010/12/17/136786.html
      

  3.   

    你说的很正确,我也了解到了为什么文件会丢失信息.不过我有另一种理解,你看看对不对:
    我用FileReader(java中读字符流的类)读一个非文本文件,然后用FileWriter(java中写字符流的类)写出去.在读文件时,用默认的编码一个字符一个字符的读取,对于有的字节,默认编码根本就不认识,于是打了一个问号(可以用txt打开看到许多问号),导致在读取的时候字符文件里就已经有了很多问号,信息就已经失去了很多.然后即使你在写入文件时采用同样的编码,那也没有用了,因为在读的时候就已经出问题了呀.