Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1531039
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 20:11:12

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


  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); 

下载本文示例代码


利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?利用FileReader/FileOutputStream拷贝中文文件出错?
阅读(116) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~