public class CopyFilebyChannel {
public static void main(String[] args) throws IOException {
/*
* @return 实际复制的字节数,如果文件、目录不存在、文件为null或者发生IO异常,返回-1
*/
copyDirectiory("/home/vergil/Desktop/111", "/home/vergil/Desktop/222");
}
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;
}
// 复制文件夹
public static void copyDirectiory(String sourceDir, String targetDir)
throws IOException {
// 新建目标目录
(new File(targetDir)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(sourceDir)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 源文件
File sourceFile=file[i];
// 目标文件
File targetFile=new
File(new File(targetDir).getAbsolutePath()
+File.separator+file[i].getName());
//copyFile2(new File(sourceFile), new File(targetFile), sourceFile);
copyFile2(sourceFile, new File(targetDir), sourceFile.getName());
}
if (file[i].isDirectory()) {
// 准备复制的源文件夹
String dir1=sourceDir + "/" + file[i].getName();
// 准备复制的目标文件夹
String dir2=targetDir + "/"+ file[i].getName();
copyDirectiory(dir1, dir2);
}
}
}
}
- 浏览: 125775 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (341)
- Java (18)
- J2EE (0)
- Linux (81)
- VIM (22)
- windows (6)
- DB (11)
- Algorithm (57)
- Data structure (17)
- JS (5)
- C++ (65)
- HTML (6)
- Cloud (4)
- Eclipse (7)
- Python (42)
- Play (3)
- HTTP (1)
- awk (7)
- shell (20)
- Regular expression (5)
- NLP (33)
- ML (38)
- DM (43)
- Probabilistic (6)
- Crawler (14)
- matlab (1)
- perl (4)
- Design pattern (1)
- IO[File] (2)
- Deep Learning (1)
发表评论
-
poi写入Excel
2015-02-25 16:56 347上一篇讲解了一下如何读取excel,那在这篇就讲一下如何去写 ... -
使用poi解析Excel
2015-02-25 14:41 336使用poi来解析Excel的xls和xlsx。 解析xls ... -
java 写文件的三种方法比较
2014-02-26 15:44 518java 写文件的三种方法比较 im ... -
java读写文件大全
2014-02-26 15:42 312使用Java操作文本文件的方法详解 【http://blo ... -
Design Pattern in Java[Challenge 2.1]
2014-02-24 22:13 435尝试用简单的语言,讲述复杂的事情。 如发现文中的错误,或 ... -
深入理解java多态性
2014-02-11 17:30 0昨天看到一个关于多态性的帖子,参考了回帖者的理解,加入了 ... -
JAVA自动补全插件
2012-02-10 15:51 468Vim 安装 javacomplete 插件 ... -
理解HashMap
2012-03-22 10:51 341以前学习HahsMap都是粗略的了解一下,能够用就行了。这次 ... -
Invoke shell in Java
2012-05-31 15:35 257一般我们在java中运行其 ... -
JAVA shell grep
2012-05-31 19:03 354近我的项目要我在WebService里用Java调用Linu ... -
JAVA写文件
2012-06-06 09:13 274最近对以前开发的一个通用数据迁移的软件进行优化。除了用JDK ... -
JAVA文件锁
2012-06-07 17:33 201项目使用到集群环境,流程发送时如果确保一个流程不会被两个流程 ... -
java正则替换标点
2012-07-19 17:40 735感谢【火龙果】,钦佩他的研究精神。http://topic. ... -
Eclipse 报 “Exception in thread "main" java.lang.OutOfMemoryError: Java heap space ”错误的解决办法
2012-07-23 09:53 407Eclipse 报 “Exception in thread ... -
java追加写文件
2012-07-30 17:43 380BufferedWriter bw = new Buffer ... -
JAVA正则忽略大小写
2012-10-18 14:45 504java正则表达式: (?i)abc 表示abc都忽略大 ... -
ReadFromFile
2012-12-21 11:33 365import java.io.*; import java.u ... -
Eclipse键盘控
2013-07-31 13:18 3171.基本的,eclipse的特色 ...
相关推荐
copyfile
前端开源库-dank-copyfiledank copyfile,纯javascript copyfile函数
matlab开发-copyfile。复制目录中的所有文件及其所有子目录
VC基于MFC、多线程的文件复制对话框实现
本文件主要是用于将文件夹下多级目录下的指定类型的文件,复制到指定文件夹内。 文件包含三行输入,第一行为要获取的文件类型,以.开始 如.xls ,多个类型的文件应以 , 隔开 如 .csv,.xls,.xlsx;...
linux c 标准库函数 读写文件 复制文件
linux下的文件复试函数,C语言实现,具有图形界面。
闲暇的时候用python 写的一个文件复制小软件 有什么功能缺陷请多多谅解 只是一个小插件.
此功能为UEFI程式下实现如何CopyFile及如何根据路径获取File的Handle,及判断文件是否存在等功能。
Qt多线程复制文件,可实现多个文件同时复制,其效率高也不卡顿
copyfile_QT_QTCopyFileA_C++.zip
一个完整的DELPHI拷贝文件的源代码,值得学习借鉴
copyfile_QT_QTCopyFileA_C++_源码.zip
CopyFile(A, B, FALSE);表示将文件A拷贝到B,如果B已经存在则覆盖(第三参数为TRUE时表示不覆盖) MoveFile(A, B);表示将文件A移动到B 2.函数原型 CopyFile: MoveFile: 由函数原型可以看出,这...
This is a simple example of multithreading with Qt(C++). 这是一个使用Qt(C++)实现多线程的简单范例。
在VC的下实现文件夹(内的所有文件)的局域网传输,用COPYFILE实现。
一个文件复制另一个文件,最终两个文件一样
【IT十八掌徐培成】Java基础第26天-06.FileChannel-RandomAccessFile-CopyFile.zip