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;
    }

  • 相关阅读:
    vs2019编译错误:Exception Processing Message 0xc0000005 Parameters...
    error LNK2001
    Debug Assertion Failed
    对路径“………………”的访问被拒绝
    c语言打开文件为什么总是以二进制方式打开
    关于typedef的用法总结
    xml学习第一天
    关于VS2017编译成功系统找不到指定文件.exe的问题
    引入的外部js文件在html文件在浏览器中乱码显示
    结对作业(四则运算)
  • 原文地址:https://www.cnblogs.com/azhqiang/p/3922032.html
Copyright © 2011-2022 走看看