就用BufferedInputStream和BufferedOutputStream应该就可以保证效率吧!
如果只考虑效率,不考虑内存使用,可以用ByteArrayInputStream将数据全部
读入到内存,再写出去,值得一试

解决方案 »

  1.   

    采用缓存类可以提高效率,但我觉得应该采用BufferedReader及BufferedWriter,因为Stream等是读取字节流,对汉字等双字节有时不能正确读取,而Reader及Writer才是字符流能正确度汉字。
      

  2.   

    import java.io.*;public class Copy
    {
    public static void main(String args[])
    {
    if(args.length != 2)
    {
    System.out.println("input: source target");
    System.exit(0);
    }
    String source = args[0];
    String target = args[1];
    try
    {
    File newFile = null;
    newFile = new File(target);
    newFile.createNewFile();
    FileInputStream in = new FileInputStream(new File(source));
    FileOutputStream out = new FileOutputStream(newFile);
    int i = -1;
    while(-1 != (i = in.read()))
    {
    out.write(i);
    }
    in.close();
    out.close();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    }
      

  3.   

    用BufferedReader和BufferWriter吧:
    try
    {
    FileReader fileIn = new FileReader("a.txt") ;
    FileWriter fileOut = new FileWriter("b.txt") ;
    BufferedReader in = new BufferedReader(fileIn) ;
    BufferedWriter out = new BufferedWriter(fileOut) ;
    String str ;
    while( (str = in.readLine())!=null )
    {
    out.write(str) ;
    }
    }
    catch( Exception e )
    {
    System.out.println(e.getMessage()) ;
    }
      

  4.   

    BufferedInputStream fr = new BufferedInputStream( new FileInputStream("c:\\original") );
    BufferedOuputStream fw = new BufferedOutputStream( new
    FileOutputStream("c:\\copy") );
    byte[] buf = new byte[8192];
    int n;
    while((n = fr.read(buf) >= 0)) 
      fw.write(buf,0,n);
    fr.close();
    fw.close();
      

  5.   

    吃面时的IO问题,I是进,O是出,能同时进行的,晕~~~~~~~~