• [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: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个文件
  • 相关阅读:
    USBDM RS08/HCS08/HCS12/Coldfire V1,2,3,4/DSC/Kinetis Debugger and Programmer -- Driver Install
    USBDM RS08/HCS08/HCS12/Coldfire V1,2,3,4/DSC/Kinetis Debugger and Programmer -- Software Install
    USBDM Debugger interface for Freescale RS08,HCS08,HCS12,Coldfire and ARM-Kinetis Devices.
    USBDM RS08/HCS08/HCS12/Coldfire V1,2,3,4/DSC/Kinetis Debugger and Programmer -- MC9S08JS16
    USBDM Coldfire V2,3,4/DSC/Kinetis Debugger and Programmer -- MC9S08JS16
    USBDM RS08/HCS08/HCS12/Coldfire V1,2,3,4/DSC/Kinetis Debugger and Programmer -- MC9S08JM16/32/60
    USBDM Kinetis Debugger and Programmer
    What is CMSIS-DAP
    Programming internal SRAM over SWD
    STM32F2x Is it possible to request multiple DMA streams with single request
  • 原文地址:https://www.cnblogs.com/jiasq/p/8533113.html
Copyright © 2020-2023  润新知