Java语言拷贝文件到d盘,速度很慢,完全赶不上window的拷贝速度,怎么回事

Java语言拷贝文件到d盘,速度很慢,完全赶不上window的拷贝速度,怎么回事
Java语言拷贝文件到d盘,速度很慢,完全赶不上window的拷贝速度,怎么回事

不知道楼主的代码是什么,慢的原因可能是:

1、Java 拷贝跟 Windows 拷贝肯定是不一样的,Java 语言的速度当然赶不上 操作系统的速度。
2、用法可能不对,逐个字节流输出跟用缓冲池拷贝效率肯定不同嘛。

使用的是IO流--Buffered流,速度较慢;另一个个方法使用的是java.nio.channels.FileChannel的transferTo方法,速度较快。所以推荐第二种方法。

/**
     * 复制文件(以超快的速度复制文件)
     * 
     * @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;
    }