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;
}
相关文章
- java static 变量存在哪_Java中的静态方法和静态变量存储在哪里?
- java volatile关键字的作用_Java并发编程彻底搞懂volatile关键字「建议收藏」
- win7 java修复工具哪个好_DLL修复工具哪个好
- java强制删文件夹_Java 删除文件夹 和 文件 集合
- java删除文件目录及文件_Java删除文件,目录
- java pfx_如何在Java中读取.pfx文件的内容?
- java scanner怎么用_Java中Scanner类的用法及使用步骤分享!「建议收藏」
- 编写java判断闰年_用Java程序判断是否是闰年的简单实例[通俗易懂]
- eclipse怎么导入java文件_Eclipse如何导入JAVA工程?如何将项目导入Eclipse中?
- Java–反射
- java冒泡排序经典代码_Java 8大经典排序算法(含源代码),必须收藏!
- 猿创征文|Java 程序员的效率工具箱
- Java Web(六)Servlet
- java 文件上传到服务器_Java上传文件到服务器端的方法「建议收藏」
- java 异或加密_Java异或技操作给任意的文件加密原理及使用详解
- 给 Java 开发者的 10 个大数据工具和框架详解编程语言
- java判断字符串中是否含有汉字详解编程语言
- java文件上传基于ajaxFileUpload+struts2详解编程语言
- JAVA 中文 unicode 相互转换 文件读取详解编程语言
- Java中使用Redis实现分布式锁(javaredis锁)
- Java ArrayList 的不同排序方法
- Java调用Linux库实现跨系统功能(java调用linux库)
- Java程序如何完成Oracle数据库的导出(jav导出oracle)
- 收购Oracle收购Java重新定义软件开发未来(java被oracle)
- Java中Oracle使用实践(java中oracle题)
- java线程之线程的生命周期的使用
- java文件重命名(文件批量重命名)实例程序代码分享