我使用FileInputStream 从一个.dat二进制文件读取内容,并用FileOutputStream的write(bytes,0,len)方法将其写入另外一个二进制文件,文件的其他部分都是对的,但是遇到有中文的部分都不对,用UE打开两份文件对照,中文部分的十六进制代码是不相同的,请问为什么会出现这样的情况,我将文件读进byte数组后没有对数组进行任何操作直接写入文件的,为什么中文部分写不对呢?

解决方案 »

  1.   

    如果.dat是个文本文件,那就用FileReader吧, 用字节方式读实际还是会用默认编码方式来转的
      

  2.   

    .dat不是文本文件,是个二进制文件
      

  3.   

    BufferedStreamReader bsr = new BufferedStreamReader(new FileInputStream ("a.dat"))
      

  4.   

    如果你没改过的话,是不会不一样的.
    把代码贴出来看看.
    楼上某个大哥说Java用默认编码方式来转的.这是错误的.你直接读写字节,Java怎么可能转换.如果说要转换的话,那是你用读取的字节去赋给一个String,这时才会涉及到编码及解码的问题.