复制指定源位置的多级文件夹下所有文件到指定目标位置

简介: 目标:复制指定源位置的所有文件、文件夹到指定的目标位置 分析:   1.如果指定源位置是文件,则直接复制文件到目标位置。   2.如果指定源位置是文件夹,则首先在目标文件夹下创建与源位置同名文件夹。

目标:复制指定源位置的所有文件、文件夹到指定的目标位置

分析:

  1.如果指定源位置是文件,则直接复制文件到目标位置。

  2.如果指定源位置是文件夹,则首先在目标文件夹下创建与源位置同名文件夹。

  3.遍历源位置文件夹下所有的文件,修改源位置为当前遍历项的文件位置,目标位置为刚刚上部创建的文件夹位置。

  4.递归调用,回到1.

编程实现

 1 package cn.hafiz.www;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.FileOutputStream;
 8 import java.io.IOException;
 9 
10 public class CopyFolder {
11     public static void main(String[] args)  throws IOException {
12         File srcFile = new File("G:\\hafiz");
13         File desFile = new File("E:\\");
14         copyFolder(srcFile, desFile);
15     }
16 
17     private static void copyFolder(File srcFile, File desFile) throws IOException  {
18         if(srcFile.isDirectory()) {
19             //是文件夹,首先在目标位置创建同名文件夹,然后遍历文件夹下的文件,进行递归调用copyFolder函数
20             File newFolder = new File(desFile, srcFile.getName());
21             newFolder.mkdir();
22             File[] fileArray = srcFile.listFiles();
23             for(File file : fileArray) {
24                 copyFolder(file, newFolder);
25             }
26         }else{
27             //是文件,直接copy到目标文件夹
28             File newFile = new File(desFile, srcFile.getName());
29             copyFile(srcFile, newFile);
30         }
31     }
32 
33     private static void copyFile(File srcFile, File newFile) throws IOException {
34         //复制文件到指定位置
35         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
36         BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
37         byte[] b = new byte[1024];
38         Integer len = 0;
39         while((len = bis.read(b)) != -1) {
40             bos.write(b, 0, len);
41         }
42         bis.close();
43         bos.close();
44     }
45 }

至此,多级文件的复制工作就完成了~

相关文章
|
4月前
|
C++
安装VS Code报错:您选定的驱动器或UNC共享不存在或不能访问。请选择其他位置。
安装VS Code报错:您选定的驱动器或UNC共享不存在或不能访问。请选择其他位置。
|
7月前
|
Windows
(文件[夹]批量分类整理_多级匹配_交叉匹配_路径结构交叉调整)文件[夹]批量复制
该文介绍了如何使用特定工具进行批量文件整理。首先,需要从提供的百度网盘和蓝奏云链接下载工具,并用提取码解锁。接着,打开工具的批量复制功能,将待整理的图片文件拖入“来源路径”,目标文件夹拖入“终点路径”。通过层级过滤排除不需要的路径。然后,利用多级匹配设置,提取文件名和路径中的关键词,如“动物”、“小型”、“食草”等,设置复制后的文件重命名规则。最后,执行批量复制,完成文件的智能分类与命名。整个过程旨在根据文件的原始分类信息,自动将其移动到相应的新目录结构下。
|
7月前
如何批量重命名,把文件(夹)名的内容位置调整(前后移动)
该文介绍了如何使用一个工具批量修改文件名,将"中文[数字]"格式改为"中文 - 数字"。首先,从提供的百度网盘或蓝奏云链接下载工具,使用提取码获取。接着,在工具中选择文件批量复制模块,通过拖放或导入按钮添加文件或文件夹。然后,设置两个规则:一个提取中文(2个字符),另一个提取数字(20个字符)。预览无误后,选择方案3,以自定义内容("规则1 空格-空格 规则2")重命名,并确保关联到之前创建的规则。最后,执行重命名操作,查看结果,文件名应已按预期更改。
|
7月前
如何把多个文件(夹)向下移动1层(在复制前或后进行)
本文介绍了一个文件批量复制工具的使用方法。首先,提供了两个下载链接:百度网盘(提取码:qwu2)和蓝奏云(提取码:2r1z)。接着,展示了文件夹结构,包含4个编号的子文件夹,每个都含兔兔图片。然后,打开工具并切换到“文件批量复制”功能,将文件夹导入并整理,去除编号文件夹的路径。通过设置命名格式,可以选择“*来源名*”或“*来上名*”进行文件夹重命名。在实际操作中,演示了这两种方式的结果,前者创建了20个以图片名为名的文件夹,后者则将所有图片归入4个以原始文件夹名为名的文件夹中。此外,还提到了使用提取方法自定义命名的选项。最后,强调了该工具的灵活性,可以结合多种命名规则满足不同需求。
|
JavaScript
用nodejs实现向文件的固定位置插入内容
用nodejs实现向文件的固定位置插入内容
113 0
|
JSON 数据格式
批量遍历指定类型的文件及文件夹,并将其复制到新的文件夹
批量遍历指定类型的文件及文件夹,并将其复制到新的文件夹
Navicat保存下来的查询放在哪个位置
保存后的查询文件查找位置:
1092 0
Navicat保存下来的查询放在哪个位置
成功解决WIN系统如何更改默认放在C盘的【我的文档】/【图片】位置的存储路径(修改到其它非系统的盘符)
成功解决WIN系统如何更改默认放在C盘的【我的文档】/【图片】位置的存储路径(修改到其它非系统的盘符)
成功解决WIN系统如何更改默认放在C盘的【我的文档】/【图片】位置的存储路径(修改到其它非系统的盘符)
有点玄学,虽然不知道为什么第一个工程配置文件的资源放到某个位置,建立第一个工程时也是同样放到那个位置,就配置文件内容不断报错了
有点玄学,虽然不知道为什么第一个工程配置文件的资源放到某个位置,建立第一个工程时也是同样放到那个位置,就配置文件内容不断报错了
432 0
有点玄学,虽然不知道为什么第一个工程配置文件的资源放到某个位置,建立第一个工程时也是同样放到那个位置,就配置文件内容不断报错了