复制多级文件CopyFoldersDemo!!!
1 public class CopyFoldersDemo { 2 public static void main(String[] args) throws IOException { 3 //创建数据源File对象,路径是E:\\itcast 4 File srcFile = new File("C:\\Users\\17310\\IdeaProjects\\itcast"); 5 6 //创建目的地File对象,路径是F:\\ 7 File destFile = new File("C:\\Users\\17310\\IdeaProjects\\myCharSyream"); 8 9 //写方法实现文件夹的复制,参数为数据源File对象和目的地File对象 10 copyFolder(srcFile, destFile); 11 } 12 13 //复制文件夹 14 private static void copyFolder(File srcFile, File destFile) throws IOException { 15 //判断数据源File是否是目录 16 if (srcFile.isDirectory()) { 17 //在目的地下创建和数据源File名称一样的目录 18 String srcFileName = srcFile.getName(); 19 File newFolder = new File(destFile, srcFileName); 20 if (!newFolder.exists()) { 21 newFolder.mkdir(); 22 } 23 //获取数据源File下所有文件或者目录的File数组 24 File[] fileArray = srcFile.listFiles(); 25 //遍历该File数组,得到每一-个File对象 26 for (File file:fileArray){ 27 //把该File作为数据源File对象,递归调用复制文件夹的方法 28 copyFolder(file,newFolder); 29 } 30 }else { 31 //说明是文件,直接复制,用字节流 32 File newFile = new File(destFile, srcFile.getName()); 33 copyFile(srcFile,newFile); 34 } 35 } 36 37 //字节缓冲流复制文件 38 private static void copyFile(File srcFile, File destFile) throws IOException { 39 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile)); 40 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile)); 41 42 byte[] bys = new byte[1024]; 43 int len; 44 while ((len = bis.read(bys)) != -1) { 45 bos.write(bys, 0, len); 46 } 47 48 bis.close(); 49 bos.close(); 50 } 51 }
P310