飞狐爷

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class Hello{
    public static void main(String args[]) throws Exception{
        String sourceFile = "D:" + File.separator + "Manor.jpg";
        String targetFile = "D:" + File.separator + "copy.jpg";
        File infile = new File(sourceFile);
        File outfile = new File(targetFile);
        copy(infile,outfile);
    }
    /**
     * 文件拷贝操作
     * @param infile
     * @param outfile
     * @return
     * @throws Exception
     */
    public static boolean copy(File infile,File outfile) throws Exception{
        InputStream input = null;
        OutputStream output = null;
        try{
            long start = System.currentTimeMillis();
            if(!outfile.getParentFile().exists()){
                outfile.getParentFile().mkdirs();
            }
            input = new FileInputStream(infile);
            output = new FileOutputStream(outfile);
            int temp = 0 ;
            while((temp = input.read()) != -1){
                output.write(temp);
            }
            long end = System.currentTimeMillis();
            System.out.println("花费时间:" + (end - start));
            return true;
        }
        catch (Exception e){
            throw e;
        }
        finally{
            if(input != null){
                input.close();
            }
            if(output != null){
                output.close();
            }
        }
        
    }
}

 改进代码,使用字节数组,更快

public static boolean copy(File infile,File outfile) throws Exception{
        InputStream input = null;
        OutputStream output = null;
        try{
            long start = System.currentTimeMillis();
            
            byte data[] = new byte[2048];
            input  = new FileInputStream(infile);
            output = new FileOutputStream(outfile);
            int temp = 0;
            while((temp = input.read(data)) != -1){
                output.write(data,0,temp);
            }
            
            long end = System.currentTimeMillis();
            System.out.println("花费时间:" + (end - start)/(double)1000 + "秒");
            return true;
        }
        catch (Exception e){
            throw e;
        }
        finally{
            if(input != null){
                input.close();
            }
            if(output != null){
                output.close();
            }
        }
        
    }

 

posted on 2016-08-25 21:19  飞狐爷  阅读(385)  评论(0编辑  收藏  举报