Java基础知识强化之IO流笔记50:IO流练习之 复制多级文件夹的案例

1. 复制多级文件夹的案例

需求:复制多级文件夹
 
    数据源:E:JavaSEday21codedemos
    目的地:E:
 
分析:
        A:封装数据源File
        B:封装目的地File
        C:判断该File是文件还是文件夹
                    a:是文件夹
                            就在目的地目录下创建该文件夹
                            获取该File对象下的所有文件或者文件夹File对象
                            遍历得到每一个File对象
                            回到C
                    b:是文件
                            就复制(字节流)
 
2. 代码示例:
 1 package cn.itcast_05;
 2 import java.io.BufferedInputStream;
 3 import java.io.BufferedOutputStream;
 4 import java.io.File;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 /*
 9  * 需求:复制多极文件夹
10  * 
11  * 数据源:E:JavaSEday21codedemos
12  * 目的地:E:\
13  * 
14  * 分析:
15  *         A:封装数据源File
16  *         B:封装目的地File
17  *         C:判断该File是文件夹还是文件
18  *             a:是文件夹
19  *                 就在目的地目录下创建该文件夹
20  *                 获取该File对象下的所有文件或者文件夹File对象
21  *                 遍历得到每一个File对象
22  *                 回到C
23  *             b:是文件
24  *                 就复制(字节流)
25  */
26 public class CopyFoldersDemo {
27     public static void main(String[] args) throws IOException {
28         // 封装数据源File
29         File srcFile = new File("E:\JavaSE\day21\code\demos");
30         // 封装目的地File
31         File destFile = new File("E:\");
32         // 复制文件夹的功能
33         copyFolder(srcFile, destFile);
34     }
35     private static void copyFolder(File srcFile, File destFile)
36             throws IOException {
37         // 判断该File是文件夹还是文件
38         if (srcFile.isDirectory()) {
39             // 文件夹
40             File newFolder = new File(destFile, srcFile.getName());
41             newFolder.mkdir();
42             // 获取该File对象下的所有文件或者文件夹File对象
43             File[] fileArray = srcFile.listFiles();
44             for (File file : fileArray) {
45                 copyFolder(file, newFolder);
46             }
47         } else {
48             // 文件
49             File newFile = new File(destFile, srcFile.getName());
50             copyFile(srcFile, newFile);
51         }
52     }
53     private static void copyFile(File srcFile, File newFile) throws IOException {
54         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
55                 srcFile));
56         BufferedOutputStream bos = new BufferedOutputStream(
57                 new FileOutputStream(newFile));
58         byte[] bys = new byte[1024];
59         int len = 0;
60         while ((len = bis.read(bys)) != -1) {
61             bos.write(bys, 0, len);
62         }
63         bos.close();
64         bis.close();
65     }
66 }
原文地址:https://www.cnblogs.com/hebao0514/p/4870290.html