/**
* 复制文件
*
* @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复制文件最快的算法的更多相关文章

  1. Java: 复制文件最快方法

    利用Java复制文件到处都可以用到,这里总结了一个类供大家参考.里面总共有两个方法: public static boolean copyFile(String srcFileName, String ...

  2. Java 复制文件的高效方法

    转载自:http://jingyan.baidu.com/article/ff4116259c2d7712e4823780.html 在Java编程中,复制文件的方法有很多,而且经常要用到.我以前一直 ...

  3. java复制文件

    package com.test.tes; import java.io.File; import java.io.FileInputStream; import java.io.FileOutput ...

  4. java复制文件的4种方式

    尽管Java提供了一个可以处理文件的IO操作类.但是没有一个复制文件的方法.复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候.然而有几种方法可以进行Java文件复制操作,下面列举出4中最 ...

  5. [JAVA]java复制文件的4种方式

    尽管Java提供了一个可以处理文件的IO操作类. 但是没有一个复制文件的方法. 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候. 然而有几种方法可以进行Java文件复制操作,下面列举出 ...

  6. java复制文件夹及所有子目录和文件

    package text; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; im ...

  7. 4种java复制文件的方式

    尽管Java提供了一个可以处理文件的IO操作类,但是没有一个复制文件的方法.复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候.然而有几种方法可以进行Java文件复制操作,下面列举出4中最 ...

  8. java复制文件夹中的所有文件和文件夹到另一个文件夹中

    1.复制文件夹 public static void copyDir(String oldPath, String newPath) throws IOException { File file = ...

  9. java复制文件范例代码

    String url1 = "F:\\SuperMap-Projects\\region.udb";// 源文件路径 try { for(int i=1;i<101;i++) ...

随机推荐

  1. day5模块学习--yaml文件处理

    yaml文件处理(http://pyyaml.org/wiki/PyYAMLDocumentation)     摘要: 本文讲的是yaml在python上的使用教程详解, YAML是一种容易人类阅读 ...

  2. 【LOJ】 #2540. 「PKUWC2018」随机算法

    题解 感觉极其神奇的状压dp \(dp[i][S]\)表示答案为i,然后不可选的点集为S 我们每次往答案里加一个点,然后方案数是,设原来可以选的点数是y,新加入一个点后导致了除了新加的点之外x个点不能 ...

  3. mysql 删除重复项

    DELETE FROM j_rank_rise_record WHERE id NOT IN ( SELECT id FROM ( SELECT * FROM j_rank_rise_record g ...

  4. mysql 判断两个字符串是否存在包含关系-------(1,2,3)与(2,3)

    1.这里这个是目前有问题的   #创建FUNCTION  DELIMITER ;     CREATE FUNCTION `is_mixed`(str1 TEXT, str2 TEXT) RETURN ...

  5. 20169211 《Linux内核原理与分析》第十一周作业

    SET-UID程序漏洞实验 一.实验简介 Set-UID 是Unix系统中的一个重要的安全机制.当一个Set-UID程序运行的时候,它被假设为具有拥有者的权限.例如,如果程序的拥有者是root,那么任 ...

  6. 查看锁信息(开启InnoDB监控)

    当前mysql版本:5.6.21 一.背景 在mysql处理死锁问题时,由于show engine innodb status输出来的死锁日志无任务事务上下文,并不能很好地诊断相关事务所持有的所有锁信 ...

  7. PHP反序列漏洞学习

    0x00 序列化和反序列化 在PHP中,序列化和反序列化对应的函数分别为serialize()和unserialize(). 序列化:serialize()将对象转换为字符串以便存储传输的一种方式. ...

  8. iOS Sprite Kit教程之xcode安装以及苹果帐号绑定

    iOS Sprite Kit教程之xcode安装以及苹果帐号绑定 其它的网站上下载安装Xcode 有时候,应用商店下载较慢,所以用户也可以选择从其他网站下载Xcode安装文件.下面讲解这种Xcode的 ...

  9. 多套方案来提高python web框架的并发处理能力

    Python常见部署方法有 :   fcgi :用spawn-fcgi或者框架自带的工具对各个project分别生成监听进程,然后和http 服务互动 wsgi :利用http服务的mod_wsgi模 ...

  10. 机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者

    python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/l ...