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

  • 相关阅读:
    开发servlet三种方式
    puppet 启动失败
    linux 内核 中链表list
    software level
    ubuntu 使用 root “sudo /bin/bash”
    linux 内存管理
    linux kernel "current" macro
    hello.hs haskell
    ubuntu samba
    微信小程序中使用 npm包管理 (保姆式教程)
  • 原文地址:https://www.cnblogs.com/azhqiang/p/3922032.html
Copyright © 2020-2023  润新知