匿名用户
1级
2016-07-04 回答
字数有限制,只给你一个方法吧,大体思路就是递归调用的方式来实现
/**
* 拷贝整个文件目录
* @param source 源目录、文件
* @param destination 目的目录、文件
*/
public static void copyFiles(File source, File destination) {
if (!source.exists()) {
//Log.warn(source.getAbsolutePath() + " 源文件或源路径不存在");
return;
}
if (destination.isFile()) {
//Log.warn(destination.getAbsolutePath() + " 目标不应该是文件, 应该是路径");
return;
}
else
destination.mkdirs();
//如果是文件
if (source.isFile()) {
try {
String filename = destination.getAbsolutePath() + File.separator + source.getName();
FileInputStream fis = new FileInputStream(source);
File file = new File(filename);
if (file.exists()) {
file.delete();
}
FileOutputStream fos = new FileOutputStream(file);
if(!StreamHelper.toOutputStream(fis, fos)) {
return;
}
fos.close();
fis.close();
Log.debug("复制 " + source.getAbsolutePath() + " 到 " + filename);
return;
}catch (IOException ex) {
Log.error(ex);
return;
}
}
//如果是目录
else {
File[] files = source.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
String path = destination.getAbsolutePath() + File.separator + files[i].getName();
File folder = new File(path);
copyFiles(files[i], folder);
}else {
copyFiles(files[i], destination);
}
}
}
}