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

Posted yub4by

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE-19.1.3IO流练习案例-复制多级文件夹相关的知识,希望对你有一定的参考价值。

 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.3IO流练习案例-复制多级文件夹的主要内容,如果未能解决你的问题,请参考以下文章

IO流的练习3 复制多级文件夹下的指定文件并改名

JavaSE-19.1.1IO流练习案例-集合到文件(排序改进版)

IO流读写(复制)视频文件练习(java)

IO流相关案例

02025_字符流练习

第4章 IO流相关案例