package copyrename;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 源数据:C:\\源文件
* 目的地:d:\\源文件
* 分析
* a:获取源文件数组对象
* b:遍历文件数组对象
* c:判断是否文件夹
* 是文件夹:
* 获取数组对象
* 遍历
* 回到c判断
* 创建文件夹
* 不是文件夹:复制新文件
*
*/
public class CopyDemo {
public static void main(String[] args) throws IOException {
File ifile = new File("c:\\源文件");
File ofile = new File("d:\\");
diguicopy(ifile, ofile);
}
// 递归法复制多层文件、文件夹
public static void diguicopy(File file, File destnation) throws IOException {
// 在目的地创建该文件夹
File newfolder = new File(destnation, file.getName());
newfolder.mkdir();
// 获取文件对象数组
File[] files = file.listFiles();
// 遍历该对象数组
for (File f : files) {
if (f.isDirectory()) {
//递归
diguicopy(f, newfolder);
} else {
//高效字节数组缓冲流
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(f));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(new File(newfolder, f.getName())));
int b = 0;
byte[] by = new byte[1024];
while ((b = bis.read(by)) != -1) {
bos.write(by, 0, b);
}
bos.close();
bis.close();
}
}
}
}
|
|