[Js-Java SE]文件/文件夹复制(递归)
代码如下:
1 package com.neu.core; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 9 public class RecursiveCopy { 10 11 public static void main(String[] args) { 12 String source = "C:\\Users\\imsha\\Desktop\\软件测试-wcn\\"; 13 String target = "E:\\test\\"; 14 int retVal = recursiveCopy(source, target); 15 if (retVal != -1) { 16 System.out.println("共复制" + retVal + "个文件"); 17 } else { 18 System.out.println("复制失败!源路径不存在或目标路径已存在!"); 19 } 20 } 21 22 public static int recursiveCopy(String source, String target) { 23 File sou = new File(source); 24 File tar = new File(target); 25 File temp = null; 26 // 记录改变的文件数 27 int retVal = 0; 28 // 源文件不存在或者目标路径已存在则退出,返回-1 29 if (!sou.exists() || tar.exists()) { 30 return -1; 31 } 32 // 获取源文件下文件列表 33 String[] fs = sou.list(); 34 // 创建目标目录 35 tar.mkdirs(); 36 for (int i = 0; i < fs.length; i++) { 37 // 构建源目录文件名 38 if (source.endsWith(File.separator)) { 39 temp = new File(source + fs[i]); 40 } else { 41 temp = new File(source + File.separator + fs[i]); 42 } 43 // 文件复制 44 if (temp.isFile()) { 45 FileInputStream input = null; 46 FileOutputStream output = null; 47 try { 48 String path = null; 49 input = new FileInputStream(temp); 50 if (target.endsWith(File.separator)) { 51 path = target + (temp.getName()).toString(); 52 } else { 53 path = target + File.separator + (temp.getName()).toString(); 54 } 55 output = new FileOutputStream(path); 56 byte[] b = new byte[1024 * 5]; 57 int len; 58 while ((len = input.read(b)) != -1) { 59 output.write(b, 0, len); 60 } 61 output.flush(); 62 System.out.println("将【" + temp.getAbsolutePath() + "】复制到【" + path + "】"); 63 } catch (FileNotFoundException e) { 64 e.printStackTrace(); 65 } catch (IOException e) { 66 e.printStackTrace(); 67 } finally { 68 // 关闭文件流 69 try { 70 output.close(); 71 } catch (IOException e) { 72 e.printStackTrace(); 73 } 74 try { 75 input.close(); 76 } catch (IOException e) { 77 e.printStackTrace(); 78 } 79 } 80 retVal += 1; 81 } 82 // 如果是文件夹,则递归调用 83 if (temp.isDirectory()) { 84 retVal += recursiveCopy( 85 source.endsWith(File.separator) ? source + fs[i] : source + File.separator + fs[i], 86 target.endsWith(File.separator) ? target + fs[i] : target + File.separator + fs[i]); 87 } 88 } 89 90 return retVal; 91 } 92 93 }
运行结果如下:
1 将【C:\Users\imsha\Desktop\软件测试-wcn\Chapter1 Software Testing Introduction.ppt】复制到【E:\test\Chapter1 Software Testing Introduction.ppt】 2 将【C:\Users\imsha\Desktop\软件测试-wcn\Chapter2 Black-Box Testing.ppt】复制到【E:\test\Chapter2 Black-Box Testing.ppt】 3 将【C:\Users\imsha\Desktop\软件测试-wcn\Chapter3 White-box Testing.ppt】复制到【E:\test\Chapter3 White-box Testing.ppt】 4 将【C:\Users\imsha\Desktop\软件测试-wcn\Chapter4 Unit Testing.ppt】复制到【E:\test\Chapter4 Unit Testing.ppt】 5 将【C:\Users\imsha\Desktop\软件测试-wcn\Chapter5 Integration Testing.ppt】复制到【E:\test\Chapter5 Integration Testing.ppt】 6 将【C:\Users\imsha\Desktop\软件测试-wcn\Chapter6 System Testing.ppt】复制到【E:\test\Chapter6 System Testing.ppt】 7 将【C:\Users\imsha\Desktop\软件测试-wcn\Chapter7 Performance Testing.ppt】复制到【E:\test\Chapter7 Performance Testing.ppt】 8 将【C:\Users\imsha\Desktop\软件测试-wcn\Chapter8 Object-oriented Software Testing and Web system Testing.ppt】复制到【E:\test\Chapter8 Object-oriented Software Testing and Web system Testing.ppt】 9 将【C:\Users\imsha\Desktop\软件测试-wcn\Chapter9 Software Testing Management and Automation.ppt】复制到【E:\test\Chapter9 Software Testing Management and Automation.ppt】 10 将【C:\Users\imsha\Desktop\软件测试-wcn\java排序\Bubble.java】复制到【E:\test\java排序\Bubble.java】 11 将【C:\Users\imsha\Desktop\软件测试-wcn\java排序\DoubleBubbleSort.java】复制到【E:\test\java排序\DoubleBubbleSort.java】 12 将【C:\Users\imsha\Desktop\软件测试-wcn\java排序\Heap.java】复制到【E:\test\java排序\Heap.java】 13 将【C:\Users\imsha\Desktop\软件测试-wcn\java排序\Insertion.java】复制到【E:\test\java排序\Insertion.java】 14 将【C:\Users\imsha\Desktop\软件测试-wcn\java排序\Merge.java】复制到【E:\test\java排序\Merge.java】 15 将【C:\Users\imsha\Desktop\软件测试-wcn\java排序\Quick.java】复制到【E:\test\java排序\Quick.java】 16 将【C:\Users\imsha\Desktop\软件测试-wcn\java排序\Radix.java】复制到【E:\test\java排序\Radix.java】 17 将【C:\Users\imsha\Desktop\软件测试-wcn\java排序\Selection.java】复制到【E:\test\java排序\Selection.java】 18 将【C:\Users\imsha\Desktop\软件测试-wcn\java排序\Shell.java】复制到【E:\test\java排序\Shell.java】 19 将【C:\Users\imsha\Desktop\软件测试-wcn\java排序\Sort.java】复制到【E:\test\java排序\Sort.java】 20 将【C:\Users\imsha\Desktop\软件测试-wcn\Oracle-张苏欣\01第一章 关系型数据库简介.pdf】复制到【E:\test\Oracle-张苏欣\01第一章 关系型数据库简介.pdf】 21 将【C:\Users\imsha\Desktop\软件测试-wcn\Oracle-张苏欣\02第二章 数据查询.pdf】复制到【E:\test\Oracle-张苏欣\02第二章 数据查询.pdf】 22 将【C:\Users\imsha\Desktop\软件测试-wcn\Oracle-张苏欣\03第三章 数据操纵.pdf】复制到【E:\test\Oracle-张苏欣\03第三章 数据操纵.pdf】 23 将【C:\Users\imsha\Desktop\软件测试-wcn\Oracle-张苏欣\04第四章 表和视图.pdf】复制到【E:\test\Oracle-张苏欣\04第四章 表和视图.pdf】 24 将【C:\Users\imsha\Desktop\软件测试-wcn\Oracle-张苏欣\05第五章 其他数据库对象.pdf】复制到【E:\test\Oracle-张苏欣\05第五章 其他数据库对象.pdf】 25 将【C:\Users\imsha\Desktop\软件测试-wcn\presentation.ppt】复制到【E:\test\presentation.ppt】 26 将【C:\Users\imsha\Desktop\软件测试-wcn\增补1.ppt】复制到【E:\test\增补1.ppt】 27 将【C:\Users\imsha\Desktop\软件测试-wcn\增补2.ppt】复制到【E:\test\增补2.ppt】 28 将【C:\Users\imsha\Desktop\软件测试-wcn\完整版课件.rar】复制到【E:\test\完整版课件.rar】 29 共复制28个文件
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步