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

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

分析:

  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 }
复制代码

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

posted @   阿豪聊干货  阅读(1401)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示