代码如下:
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:UsersimshaDesktop软件测试-wcnChapter1 Software Testing Introduction.ppt】复制到【E: estChapter1 Software Testing Introduction.ppt】 2 将【C:UsersimshaDesktop软件测试-wcnChapter2 Black-Box Testing.ppt】复制到【E: estChapter2 Black-Box Testing.ppt】 3 将【C:UsersimshaDesktop软件测试-wcnChapter3 White-box Testing.ppt】复制到【E: estChapter3 White-box Testing.ppt】 4 将【C:UsersimshaDesktop软件测试-wcnChapter4 Unit Testing.ppt】复制到【E: estChapter4 Unit Testing.ppt】 5 将【C:UsersimshaDesktop软件测试-wcnChapter5 Integration Testing.ppt】复制到【E: estChapter5 Integration Testing.ppt】 6 将【C:UsersimshaDesktop软件测试-wcnChapter6 System Testing.ppt】复制到【E: estChapter6 System Testing.ppt】 7 将【C:UsersimshaDesktop软件测试-wcnChapter7 Performance Testing.ppt】复制到【E: estChapter7 Performance Testing.ppt】 8 将【C:UsersimshaDesktop软件测试-wcnChapter8 Object-oriented Software Testing and Web system Testing.ppt】复制到【E: estChapter8 Object-oriented Software Testing and Web system Testing.ppt】 9 将【C:UsersimshaDesktop软件测试-wcnChapter9 Software Testing Management and Automation.ppt】复制到【E: estChapter9 Software Testing Management and Automation.ppt】 10 将【C:UsersimshaDesktop软件测试-wcnjava排序Bubble.java】复制到【E: estjava排序Bubble.java】 11 将【C:UsersimshaDesktop软件测试-wcnjava排序DoubleBubbleSort.java】复制到【E: estjava排序DoubleBubbleSort.java】 12 将【C:UsersimshaDesktop软件测试-wcnjava排序Heap.java】复制到【E: estjava排序Heap.java】 13 将【C:UsersimshaDesktop软件测试-wcnjava排序Insertion.java】复制到【E: estjava排序Insertion.java】 14 将【C:UsersimshaDesktop软件测试-wcnjava排序Merge.java】复制到【E: estjava排序Merge.java】 15 将【C:UsersimshaDesktop软件测试-wcnjava排序Quick.java】复制到【E: estjava排序Quick.java】 16 将【C:UsersimshaDesktop软件测试-wcnjava排序Radix.java】复制到【E: estjava排序Radix.java】 17 将【C:UsersimshaDesktop软件测试-wcnjava排序Selection.java】复制到【E: estjava排序Selection.java】 18 将【C:UsersimshaDesktop软件测试-wcnjava排序Shell.java】复制到【E: estjava排序Shell.java】 19 将【C:UsersimshaDesktop软件测试-wcnjava排序Sort.java】复制到【E: estjava排序Sort.java】 20 将【C:UsersimshaDesktop软件测试-wcnOracle-张苏欣 1第一章 关系型数据库简介.pdf】复制到【E: estOracle-张苏欣 1第一章 关系型数据库简介.pdf】 21 将【C:UsersimshaDesktop软件测试-wcnOracle-张苏欣 2第二章 数据查询.pdf】复制到【E: estOracle-张苏欣 2第二章 数据查询.pdf】 22 将【C:UsersimshaDesktop软件测试-wcnOracle-张苏欣 3第三章 数据操纵.pdf】复制到【E: estOracle-张苏欣 3第三章 数据操纵.pdf】 23 将【C:UsersimshaDesktop软件测试-wcnOracle-张苏欣 4第四章 表和视图.pdf】复制到【E: estOracle-张苏欣 4第四章 表和视图.pdf】 24 将【C:UsersimshaDesktop软件测试-wcnOracle-张苏欣 5第五章 其他数据库对象.pdf】复制到【E: estOracle-张苏欣 5第五章 其他数据库对象.pdf】 25 将【C:UsersimshaDesktop软件测试-wcnpresentation.ppt】复制到【E: estpresentation.ppt】 26 将【C:UsersimshaDesktop软件测试-wcn增补1.ppt】复制到【E: est增补1.ppt】 27 将【C:UsersimshaDesktop软件测试-wcn增补2.ppt】复制到【E: est增补2.ppt】 28 将【C:UsersimshaDesktop软件测试-wcn完整版课件.rar】复制到【E: est完整版课件.rar】 29 共复制28个文件