黑马程序员技术交流社区
标题:
[IO经典面试题涵盖知识面广]复制多层文件夹
[打印本页]
作者:
驰骋向前
时间:
2016-12-9 00:15
标题:
[IO经典面试题涵盖知识面广]复制多层文件夹
/*4.请编写程序,复制多层文件夹,并测试
答案:*/
public class CopyDirectorys {
public static void main(String[] args) throws Exception {
//1:封装数据源
File srcPath = new File("D:\\java\\wokepace\\1day24\\b");
//2:封装目的地
File destPath = new File("D:\\java\\wokepace\\1day24\\b-copy");
//复制文件夹
copyDirectory(srcPath, destPath);
System.out.println("复制完毕!");
}
//复制文件夹
private static void copyDirectory(File srcPath, File destPath) throws Exception {
//3:创建目的地文件夹
destPath.mkdir();
//4:获取数据源中 所有的File对象
File[] files = srcPath.listFiles();
//5:遍历,获取到每一个File对象
for (File file : files) {
//6:判断File对象是否为文件夹
if (file.isDirectory()) {
//是: 递归 回到步骤3
//file -- E:\resource\各种专治
//dest -- YesDirectory\各种专治
File dest = new File(destPath, file.getName());
copyDirectory(file, dest);
} else {
//否:复制文件
//file -- E:\resource\Demo.java
//dest -- YesDirectory\Demo.java
File dest = new File(destPath, file.getName());
//复制文件
copyFile(file, dest);
}
}
}
//复制文件
private static void copyFile(File srcPath, File destPath) throws Exception {
//数据源
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcPath));
//目的地
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destPath));
//读
byte[] buffer = new byte[1024];
int len = 0;
while ((len=bis.read(buffer)) != -1) {
//写
bos.write(buffer, 0, len);
}
//释放资源
bis.close();
bos.close();
}
}
作者:
jiangyu
时间:
2017-1-18 00:34
学习了!!!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2