利用FileReader/FileOutputStream拷贝中文文件出错?

利用如下代码片断拷贝中文文件不会出错:

  int c; 
  while ((c = MyFileReader.read()) != -1) 
      MyFileWriter.write(c); 
利用如下代码片断拷贝中文文件会导致文件内容错误:

  int c; 
  while ((c = MyFileReader.read()) != -1) 
    MyFileOutputStream.write(c);   
造成这个问题的原因是:FileReader.read()返回一个int,其取值范围是0 到65535,通常来说是两个字节的;FileWriter.write(int c)向文件写入一个int,通常来说也是两个字节的,如果某个字符的高位字节为空,那么其高位字节将被舍弃;FileOutputStream.write(int b)虽然接受一个int作为参数,实际上只向文件写入一个字节,如果传递过来的参数是一个双字节的汉字,其高位字节将被舍弃,造成文件内容错误。 建议:永远只使用InputStream/OutputStream进行IO操作。 利用如下代码片断拷贝中文文件不会出错:

  int c; 
  while ((c = MyFileInputStream.read()) != -1) 
      MyFileOutputStream.write(c); 
<淘宝热门商品:
 

120.00元  

┏◤妙妙减肥大王╭消费保障◥┗◣℡谁比我性感╰ 皇冠100%◢

 

 

淘宝紫砂壶第一皇冠!淘宝最大的信用度第一的紫砂壶大卖家!


来源:程序员网

小小豆叮

0 Responses to "利用FileReader/FileOutputStream拷贝中文文件出错?"

发表评论