复制文件有一种方法出现乱码

本文通过两个示例对比,展示了使用不同方式复制文件时遇到的问题:一个成功复制了文件,另一个则导致目标文件出现乱码。文章探讨了使用FileInputStream与FileOutputStream进行字节流复制的方法,并提出使用FileReader与FileWriter进行字符流复制时出现乱码的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天随手做了复制文件的代码,发现了一个问题

public void readByPath() throws IOException{
  File file=new File("D:/lidahu/lidahu.doc");
  File file2=new File("D:/lidahu/lidahu2.doc");
  try {
   FileInputStream fs=new FileInputStream(file);
   FileOutputStream fo = new FileOutputStream(file2);
   
   byte[] name=new byte[(int) file.length()];
   if(fs.read(name)!=-1){
    fo.write(name);
   }
   fs.close();
   fo.close();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
 }

 

上面代码是没有问题的

public void readByPath() throws IOException{
  File file=new File("D:/lidahu/lidahu.doc");
  File file2=new File("D:/lidahu/lidahu3.doc");
  try {
   FileReader fs=new FileReader(file);
   FileWriter fo = new FileWriter(file2);
   
   char[] name=new char[(int) file.length()+1];
   if(fs.read(name)!=-1){
    fo.write(name);
    
   }
   fs.close();
   fo.close();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
 }

上面的代码就出现问题了,复制的文件打开乱码

目前我还不能解释原因,希望有人能解答下!

转载于:https://my.oschina.net/tiger1986/blog/142016

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值