思路:

判断 即将 复制的文件是文件夹还是文件

遍历需要复制的源文件夹

如果是文件夹,就通过流创建一个同样的子文件夹

如果是文件,就复制过去

接下来上代码

public class Demo1 {

    public static void main(String[] args) {
//裁剪的文件
String f1 = "C:\\Users\\KAlways18\\Desktop\\1216作业\\1216作业";
//保存的位置
String f2 = "C:\\Users\\KAlways18\\Desktop\\1216作业\\第一题完成后没有这个文件夹\\1216作业\\1216作业1";
One(f1, f2);
} //先进行文件的父目录的创建在进行子目录的创建
public static void One(String f1, String f2) {
File crop = new File(f1);
File save = new File(f2, crop.getName());
if (!save.exists()) {//判断目录是否存在
save.mkdir();//创建单个文件
}
traverse(crop.getAbsolutePath(), save.getAbsolutePath());//调用方法
//删除父目录
//这时候删除父目录时没有子目录了可以正常删除
if (crop.delete()) {
System.out.println("父目录删除成功");
}
} //穿过
public static void traverse(String f1, String f2) {
try {
File crop = new File(f1);//拷贝
if (!crop.isDirectory()) {//如果不是文件就不复制
return;
}
File save = new File(f2);//保存
if (!save.exists()) {//判断路径是否存在不存在就创建
save.mkdir();//创建单个文件
}
File[] files = crop.listFiles();
for (File f : files) {
//separator与系统相关的默认分隔符
String strCrop = f1 + File.separator + f.getName();//拼接
System.out.println("需要复制文件夹:" + strCrop);
String strSave = f2 + File.separator + f.getName();
System.out.println("粘贴文件夹:" + strSave);
if (f.isDirectory()) {
System.out.println("\n正在创建文件夹" + f.getName() + "\n");
traverse(strCrop, strSave);
}
//如果是文件就进行写入
if (f.isFile()) {
System.out.println("\n正在创建文件" + f.getName() + "\n");
makeFile(strCrop, strSave);
}
//删除文件,只能删除子目录文件还要进行删除父目录文件在第一次调用方法时进行删除
if (f.delete()) {
System.out.println("子文件或者子文件夹删除成功");
}
}
} catch (Exception e) {
System.out.println("文件可能找不到");
e.printStackTrace();
}
} //文件复制
public static void makeFile(String f1, String f2) {
//写在try中进行捕获不需要关流
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f1));//输入读取
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f2));//输出写入
) {
int tem = 0;
byte[] b = new byte[1024];
while ((tem = bis.read(b)) != -1) {
bos.write(b);
} } catch (IOException e) {
e.printStackTrace();
}
} }

最新文章

  1. 图形数据库Neo4J简介
  2. 实现textarea高度自适应内容,无滚动条
  3. Linux下查看文件和文件夹大小
  4. jQuery.smoove — jQuery和CSS3炫酷滚动页面内容元素动画特效插件
  5. HDU 3853LOOPS(简单概率DP)
  6. python __init__.py
  7. python学习第四天第一部分
  8. PetShop 4.0学习笔记:消息队列MSMQ
  9. 使用maven profile实现多环境可移植构建
  10. 复杂事件处理——Esper入门(示例程序)
  11. -_-#【Canvas】measureText, translate, drawImage
  12. 在OC中调用Swift类中定义delegate出现:Property 'delegate' not found on object of type ...
  13. Mvc htmlhelper that generates a menu from a controller
  14. Android学习总结——适配器
  15. Winform - 全屏显示
  16. extjs的相关属性
  17. VC版八皇后
  18. LibVLC audio controls
  19. Spring:AOP
  20. CentOS7+CDH5.14.0安装CDH错误排查: HiveServer2 该角色的进程已退出。该角色的预期状态为已启动

热门文章

  1. goproxy.io
  2. 第6篇-Java方法新栈帧的创建
  3. Linux 鸟叔的私房菜--完全结束
  4. [08 Go语言基础-for循环]
  5. 超硬核 Web 前端学霸笔记,学完就去找工作!
  6. Python - typing 模块 —— NewType
  7. Oracle 数据库的导入与导出
  8. C#/VB.NET 将PDF转为OFD
  9. 题解 d
  10. Thread类的常用方法----多线程基础练习