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

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

需求:复制多级文件夹
 
     数据源:E:\JavaSE\day21\code\demos
     目的地: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:\JavaSE\day21\code\demos
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值