如题
  • 注意,文件夹是不能拷贝的, 需要mkdir的
  • 文件选择合适的流进行拷贝
main测试方法
/**
* 主测试类,默认将D:\\base01 下的复制到D:\\base02
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub String originUrl;
String targetUrl; System.out.println("请输入源目录: "+"D:\\base01");
// originUrl = scanner.next();
originUrl = "D:\\base01";
System.out.println("请输入目标目录: "+"D:\\base02");
// targetUrl = scanner.next();
targetUrl = "D:\\base02"; System.out.println("正在将"+originUrl+"目录下全部文件复制到"+targetUrl+"........."); //Show Time , 先遍历,再逐个复制即可1
File beginDir = new File(originUrl);
File endDir = new File(targetUrl); //获取第一层目录, 遍历, 深度优先搜索
File[] childFileArr = beginDir.listFiles();
dfsDir(childFileArr,originUrl,targetUrl); System.out.println("复制成功--");
}
dfs复制方法
/**
* dfs复制,文件夹mkdir后进入递归,文件直接拷贝
* @param childFileArr
* @throws IOException
*/
public static void dfsDir(File[] childFileArr,String readerUrl,String writerUrl) throws IOException {
//遍历
for(File file : childFileArr) {
//计算到拷贝的目标文件夹名称
File targetDir = new File(writerUrl+"\\"+file.getName()); //判断
if(file.isDirectory()) {
//是文件夹需要先mkdir targetDir
if(!targetDir.exists()){
targetDir.mkdirs();
}
//文件夹dfs搜下去即可
dfsDir(file.listFiles(),file.getAbsolutePath(),targetDir.getAbsolutePath());
}
else {
//是文件进行复制
copyFileReaderWriter(file.getAbsolutePath(),targetDir.getAbsolutePath());
}
}
}
copyFileReaderWriter,文件的复制, 自行根据使用场景进行替换;比如音频不能用此字符流方法, 字符流多是用于文本复制

/**
* 根据Url进行文件的复制
* @param readerUrl 字符流输入流
* @param writerUrl 字符流输出流
* @throws IOException
*/
public static void copyFileReaderWriter(String readerUrl,String writerUrl) throws IOException {
Reader reader = new FileReader(readerUrl);
Writer writer = new FileWriter(writerUrl);
char[] arr = new char[5];
try {
int len=0;
while((len=reader.read(arr))!=-1) {
writer.write(new String(arr,0,len));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
reader.close();
writer.close();
}
}
测试输出
请输入源目录: D:\base01
请输入目标目录: D:\base02
正在将D:\base01目录下全部文件复制到D:\base02.........
复制成功--
测试结果

运行成功,所有子文件夹及目录均已拷贝成功.

最新文章

  1. Angular2 组件生命周期
  2. 【转】SSL协议、SET协议、HTTPS简介
  3. JSP网站开发基础总结《十》
  4. TextView 字数限制
  5. 谈谈 Google 的 Test Certified
  6. Linux服务器管理: 系统管理:系统资源查看
  7. 创建Windows截图工具的快捷方式
  8. Linphone iOS客户端编译时打开G729支持
  9. Daily Scrum1--团队项目分工及估计时间
  10. MySQL.. ERROR! The server quit without updating PID file问题解决
  11. Poj 3030 Nasty Hacks
  12. placeholder属性兼容js支持
  13. 从小白进阶ubuntu高手的必经之路—命令
  14. linux初识-02常用命令
  15. TextReader/TextWriter 的类
  16. jquery动态加入删除一行数据
  17. 读书笔记之C# delegate
  18. JOSN反串行化
  19. WPF: ShowDialog() 切换到其他应用窗口后,再切换回来无法让子窗口总在最上方
  20. SQLServer之修改用户自定义数据库用户

热门文章

  1. [LeetCode] 666. Path Sum IV 二叉树的路径和 IV
  2. python+lego ev3的心得总结 随时更新
  3. mysql查询之部门工资最高的员工
  4. 机器学习技法实现(一):AdaBoost- Decision Stump (AdaBoost - 决策树的基于Matlab的实现)
  5. 设置Kafka集群的方法
  6. python 之 前端开发( jQuery事件、动画效果、.each()、 .data())
  7. PAT(B) 1090 危险品装箱(Java)
  8. linux terminal 快捷键
  9. [LOJ2065] [SDOI2016]模式字符串
  10. .NET子页Main页面实例(UI页面)