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

简介: 目标:复制指定源位置的所有文件、文件夹到指定的目标位置 分析:   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 }

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

相关文章
|
Java
给网站添加微信扫描二维码登录功能
最近网站PC端集成微信扫码登录,踩了不少坑,在此记录下实现过程和注意事项。
4460 0
|
12月前
|
传感器 物联网 网络虚拟化
物联网卡怎么取消区域限制
物联网卡(IoT SIM卡)通常用于连接物联网设备,如智能城市设备、工业传感器、车载设备等,以实现数据的远程传输和设备的远程管理。物联网卡通常会有区域限制,即只能在特定的地区或国家内使用。取消物联网卡的区域限制并不是一个直接的操作,因为这通常取决于服务提供商的政策和合同条款。不过,以下是一些可能的步骤和建议,可以尝试来解除或绕过这些限制:
|
存储 编解码 定位技术
CorelDRAW2023全新版本功能最新介绍
使用 CorelDRAW2023,随时随都能进行设计创作。在 Windows或Mac上使用专为此平台设计的直观界面,以自己的风格尽情自由创作。同全球数百万信赖CorelDRAW Graphics Suite 的艺术家、设计者及小型企业主一样,大胆展现真我,创作出众的创意作品。上半年又出了CorelDRAW 2023(25.1.1.328)中文全功能 64-Bit直装版,再次跟大家分享下。由于本次安装的 CorelDRAW 2023简体中文安装包非常精简,直接安装就行,老规矩:在纯净的 Windows 10/11 操作系统下,断网安装CorelDRAW 2023安装包即可!
1027 0
|
存储 运维 监控
数据密集型系统的云原生架构与稳定性保障
本文是参加QCon全球软件开发大会(2023·北京站)专题分享后的一些总结。参加此次大会的最大感受是疫情后的快速恢复,到现场的听众座无虚席,一些场次甚至出现无座。同时也学习了其他多个专题分享,总体感觉是整个大会专业度很高,无论是从专题分享的内容、还是Q&A环节的听众互动。
427 0
数据密集型系统的云原生架构与稳定性保障
|
存储 运维 算法
【运维】GlusterFS 分布式文件系统
GlusterFS 分布式文件系统
1785 1
【运维】GlusterFS 分布式文件系统
|
C++
CCFCSP刷题之路---202104-3 DHCP服务器(C/C++ 100分)
CCFCSP刷题之路---202104-3 DHCP服务器(C/C++ 100分)
463 0
|
弹性计算 Linux Windows
【ECS常见问题 二】镜像计费问题
复制镜像怎么收费的? 复制镜像过程包括以下操作: 从源地域将生成自定义镜像的快照复制到目标地域。在目标地域根据快照自动生成自定义镜像。
【ECS常见问题 二】镜像计费问题
|
Java 关系型数据库 MySQL
springboot配置文件包含特殊字符的处理
springboot配置文件包含特殊字符的处理
759 0
|
弹性计算 关系型数据库 MySQL
使用阿里云ECS建立博客
使用阿里云ECS建立博客
使用阿里云ECS建立博客
|
Android开发 iOS开发 开发者
iBox-面向Flutter的一站式研发工作台
Flutter 一码多端的特性,解放了端上同学的人力,带来了研发效率的提升。但随之而来的又在研发链路中发现了各种问题,例如研发环境搭建,双端工程环境,集成发布流程繁琐等等。为了深入了解开发同学们的痛点,作者团队内部发起了一份问卷调查。本文将基于问卷调查中指出的痛点,以及解决这些问题的时候面临的一些挑战进行探讨。
iBox-面向Flutter的一站式研发工作台

热门文章

最新文章