import java.io.*;
public class ReadFile {

public static void main(String args[]){
ReadFile rf=new ReadFile();
try{
rf.copy("d:\\fusion32.rar","d:\\32.rar");
}
catch(Exception e){
e.printStackTrace();
}
}
public void copy(String fileName,String copyFileName) throws Exception{ BufferedReader reader=new BufferedReader(new FileReader(fileName));
    BufferedWriter writer=new BufferedWriter(new FileWriter(copyFileName));
    
    String str=null;
     str=reader.readLine();
    while(str!=null)
    {
     writer.write(str+"\r\n");
     
     str=reader.readLine();
    }
    reader.close();
    writer.close(); 
}

}拷贝的rar文件不能打开,长度有问题,请问是怎么回事?
如果有FileInputStream,FileOutputStream就没有问题。

解决方案 »

  1.   

    当然有问题
    InputStream/OutputStream是字节流
    Reader/Writer是字符流字节流可以读取任何文件(文件本身是字节构成的)
    字符流试图使用一种编码(比如GBK)把字节转成字符,如果不是文本文件的话,就会有乱码使用readLine就一塌糊涂了
      

  2.   

    另外搞不懂楼主为什么使用字符Reader使用字节流方式显示效率更高
      

  3.   

    当然不对了
    你把字节转换成字符了比如原来的数据是 0xAABBCC  字节数组就是 0xAA 0xBB 0xCC
    但是你转成字符就变成了 三个字   文字1 文字2 文字3