加入收藏在线咨询
位置:主页 >

热博体育官网:利用FileReaderFileOutputStream拷贝中文文件出错?

作者:dudu时间:11月29日浏览:


使用如下代码片断拷贝中文文件不会掉足:

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/Outp热博体育官网utStream进行IO操作。

使用如下代码片断拷贝中文文件不会掉足:

int c;

while ((c = MyFileInputStream.read()) != -1)

MyFileOutputStream.write(c);

电话:13866999966
联系人:王经理
Q Q:88996699
邮箱:admin@dede58.com
地址:中国XX省XX市XX路XX号