[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个文件

 

posted @ 2018-03-09 12:03  Js_zero  阅读(205)  评论(0编辑  收藏  举报