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