IO流完成文件夹的拷贝与删除
1 package IO流; 2 3 import java.io.*; 4 5 public class Test03_完成文件夹的拷贝 { 6 public static void main(String[] args) throws Exception { 7 //源文件路径 8 File f1 = new File("F:\\Maven\\smbms"); 9 //目标文件路径 10 File f2 = new File("H:\\Test\\Demo"); 11 12 //调用方法进行拷贝 13 //folderCopy(f1, f2); 14 15 deleteFile(f2); 16 } 17 18 19 /** 20 * 递归拷贝文件夹 21 * 22 * @param oldFile 源文件夹 23 * @param newFile 目标文件夹 24 */ 25 private static void folderCopy(File oldFile, File newFile) { 26 //判断目标文件夹是否存在 27 if (!newFile.exists()) { 28 newFile.mkdirs(); 29 } 30 //获得源文件夹所有子文件 31 File[] srcFiles = oldFile.listFiles(); 32 for (File srcFile : srcFiles) { 33 //创建复制目标文件 34 File targetFile = new File(newFile.getAbsoluteFile() + "/" + srcFile.getName()); 35 if (srcFile.isDirectory()) { 36 //源文件为文件夹,目标文件创建文件夹 37 targetFile.mkdir(); 38 //递归 39 folderCopy(srcFile, targetFile); 40 } else { 41 //不是文件夹,复制该文件(此处可以抽取为赋值文件方法) 42 FileInputStream fis = null; 43 FileOutputStream fos = null; 44 try { 45 fis = new FileInputStream(srcFile); 46 fos = new FileOutputStream(targetFile); 47 byte[] bytes = new byte[1024]; 48 int len = 0; 49 while ((len = fis.read(bytes)) != -1) { 50 fos.write(bytes, 0, len); 51 fos.flush(); 52 } 53 } catch (Exception e) { 54 e.printStackTrace(); 55 } finally { 56 //关闭流 57 if (fos != null) { 58 try { 59 fos.close(); 60 } catch (IOException e) { 61 e.printStackTrace(); 62 } 63 } 64 if (fis != null) { 65 try { 66 fis.close(); 67 } catch (IOException e) { 68 e.printStackTrace(); 69 } 70 } 71 } 72 73 } 74 } 75 } 76 77 78 /** 79 * 递归删除文件夹 80 * 81 * @param file 82 */ 83 public static void deleteFile(File file) { 84 //判断路径是否存在 85 if (file.exists()) { 86 //测试此抽象路径名表示的文件是否是一个标准文件。 87 if (file.isFile()) { 88 file.delete(); 89 } else {//不是文件,对于文件夹的操作 90 //返回file路径下所有文件和文件夹的绝对路径 91 File[] listFiles = file.listFiles(); 92 for (File file2 : listFiles) { 93 /* 94 * 递归作用:由外到内先一层一层删除里面的文件 再从最内层 反过来删除文件夹 95 * 注意:此时的文件夹在上一步的操作之后,里面的文件内容已全部删除 96 * 所以每一层的文件夹都是空的 ==》最后就可以直接删除了 97 */ 98 deleteFile(file2); 99 } 100 file.delete(); 101 } 102 } else { 103 System.out.println("该file路径不存在!!"); 104 } 105 } 106 }