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 }
时间: 2024-10-20 13:18:02