zoukankan      html  css  js  c++  java
  • JAVA复制文件最快的算法

    /**
    * 复制文件
    *
    * @param srcFile
    * 源文件File
    * @param destDir
    * 目标目录File
    * @param newFileName
    * 新文件名
    * @return 实际复制的字节数,如果文件、目录不存在、文件为null或者发生IO异常,返回-1
    */
    public static long copyFile1(File srcFile, File destDir, String newFileName) {
    long copySizes = 0;
    if (!srcFile.exists()) {
    System.out.println("源文件不存在");
    copySizes = -1;
    } else if (!destDir.exists()) {
    System.out.println("目标目录不存在");
    copySizes = -1;
    } else if (newFileName == null) {
    System.out.println("文件名为null");
    copySizes = -1;
    } else {
    try {
    BufferedInputStream bin = new BufferedInputStream(
    new FileInputStream(srcFile));
    BufferedOutputStream bout = new BufferedOutputStream(
    new FileOutputStream(new File(destDir, newFileName)));
    int b = 0, i = 0;
    while ((b = bin.read()) != -1) {
    bout.write(b);
    i++;
    }
    bout.flush();
    bin.close();
    bout.close();
    copySizes = i;

    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    return copySizes;
    }

    /**
    * 复制文件(以超快的速度复制文件)
    *
    * @param srcFile
    * 源文件File
    * @param destDir
    * 目标目录File
    * @param newFileName
    * 新文件名
    * @return 实际复制的字节数,如果文件、目录不存在、文件为null或者发生IO异常,返回-1
    */
    public static long copyFile2(File srcFile, File destDir, String newFileName) {
    long copySizes = 0;
    if (!srcFile.exists()) {
    System.out.println("源文件不存在");
    copySizes = -1;
    } else if (!destDir.exists()) {
    System.out.println("目标目录不存在");
    copySizes = -1;
    } else if (newFileName == null) {
    System.out.println("文件名为null");
    copySizes = -1;
    } else {
    try {
    FileChannel fcin = new FileInputStream(srcFile).getChannel();
    FileChannel fcout = new FileOutputStream(new File(destDir,
    newFileName)).getChannel();
    long size = fcin.size();
    fcin.transferTo(0, fcin.size(), fcout);
    fcin.close();
    fcout.close();
    copySizes = size;
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    return copySizes;
    }

  • 相关阅读:
    [No000088]并行循环vs普通循环
    [No000087]Linq排序,SortedList排序,二分法排序性能比较
    [No000086]C#foreach集合被改变,报错处理方案
    [No000085]C#反射Demo,通过类名(String)创建类实例,通过方法名(String)调用方法
    [No000084]C# 使用Log4Net(1)-快速建立一个demo
    [No000082]Convert和Parse的区别/Convert.ToInt32()与int.Parse()的区别
    [No000081]SVN学习笔记1-服务端搭建
    [No00007F]2016-面经[下] 英文简历写作技巧
    [No00007E]2016-面经[中]
    [No00007D]2016-面经[上]
  • 原文地址:https://www.cnblogs.com/azhqiang/p/3922032.html
Copyright © 2011-2022 走看看