JavaSE-19.1.3【IO流练习案例-复制多级文件夹】
1 package day10.lesson1.p3; 2 3 import java.io.*; 4 5 /* 6 1.3 案例-复制多级文件夹 7 8 1. 创建数据源File对象 9 2. 创建目的地File对象 10 3. 写方法实现文件夹的复制,参数为数据源File对象和目的地File对象 11 4. 判断数据源File是否是文件 12 是文件: 13 直接复制,用字节流 14 不是文件: 15 在目的地下创建与数据源File名称一样的目录, 16 获取数据源File下的所有文件或者子目录的File数组, 17 遍历该File数组,得到每一个File对象, 18 把该File作为数据源File对象,递归调用文件夹复制方法 19 */ 20 public class CopyFoldersDemo { 21 public static void main(String[] args) throws IOException{ 22 File srcFile = new File("stage2\\src\\day10\\lesson1\\p3\\source\\test"); 23 File destFile = new File("stage2\\src\\day10\\lesson1\\p3\\copy"); 24 25 copyFolder(srcFile, destFile); 26 } 27 28 29 private static void copyFolder(File srcFile, File destFile) throws IOException{ 30 if(srcFile.isDirectory()){ 31 String srcFileName = srcFile.getName(); 32 File newFolder = new File(destFile, srcFileName); //拼接 33 if(!newFolder.exists()){ 34 newFolder.mkdir(); 35 } 36 37 File[] listFiles = srcFile.listFiles(); 38 for (File file: listFiles){ //此处file可能是文件,也可能是文件夹 39 copyFolder(file, newFolder); //递归 40 } 41 }else { //srcFile是文件,直接复制 42 File newFile = new File(destFile, srcFile.getName()); //拼接 43 copyFile(srcFile, newFile); 44 } 45 } 46 47 48 private static void copyFile(File srcFile, File destFile) throws IOException { 49 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile)); 50 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile)); 51 52 byte[] bytes = new byte[1024]; 53 int len; 54 while ((len=bis.read(bytes)) != -1){ 55 bos.write(bytes, 0, len); 56 } 57 58 bos.close(); 59 bis.close(); 60 } 61 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!