JavaSE-19.1.3【IO流练习案例-复制多级文件夹】

 1 package day10.lesson1.p3;
 2 
 3 import java.io.*;
 4 
 5 /*
 6 1.3 案例-复制多级文件夹
 7 
 8     1. 创建数据源File对象
 9     2. 创建目的地File对象
10     3. 写方法实现文件夹的复制,参数为数据源File对象和目的地File对象
11     4. 判断数据源File是否是文件
12         是文件:
13             直接复制,用字节流
14         不是文件:
15             在目的地下创建与数据源File名称一样的目录,
16             获取数据源File下的所有文件或者子目录的File数组,
17             遍历该File数组,得到每一个File对象,
18             把该File作为数据源File对象,递归调用文件夹复制方法
19  */
20 public class CopyFoldersDemo {
21     public static void main(String[] args) throws IOException{
22         File srcFile = new File("stage2\\src\\day10\\lesson1\\p3\\source\\test");
23         File destFile = new File("stage2\\src\\day10\\lesson1\\p3\\copy");
24 
25         copyFolder(srcFile, destFile);
26     }
27 
28 
29     private static void copyFolder(File srcFile, File destFile) throws IOException{
30         if(srcFile.isDirectory()){
31             String srcFileName = srcFile.getName();
32             File newFolder = new File(destFile, srcFileName); //拼接
33             if(!newFolder.exists()){
34                 newFolder.mkdir();
35             }
36 
37             File[] listFiles = srcFile.listFiles();
38             for (File file: listFiles){ //此处file可能是文件,也可能是文件夹
39                 copyFolder(file, newFolder); //递归
40             }
41         }else { //srcFile是文件,直接复制
42             File newFile = new File(destFile, srcFile.getName()); //拼接
43             copyFile(srcFile, newFile);
44         }
45     }
46 
47 
48     private static void copyFile(File srcFile, File destFile) throws IOException {
49         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
50         BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
51 
52         byte[] bytes = new byte[1024];
53         int len;
54         while ((len=bis.read(bytes)) != -1){
55             bos.write(bytes, 0, len);
56         }
57 
58         bos.close();
59         bis.close();
60     }
61 }

JavaSE-19.1.3【IO流练习案例-复制多级文件夹】

 

上一篇:JavaSE-19.1.2【IO流练习案例-复制单级文件夹】


下一篇:Java zip解压及读取