zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    如何从程序集中加载及卸载插件(下)
    Castle AOP 系列(四):实现一个简单的基于上下文调用的权限校验机制
    Castle AOP 系列(一):对类方法调用的拦截
    Mussel使用系列(六):分布式调用的牛刀小试
    新发现XmlNode中变态的地方
    我们发现你在XX邮箱的账号密码与其他网站被盗账号密码一致 请立即更改密码。
    html5 css3 新特性一览表
    [android] Http Post 请求
    [vs 使用技巧] VS2013显示行数 行号
    ORACLE数据库存储使用情况查询命令
  • 原文地址:https://www.cnblogs.com/zhangzhixi/p/14364100.html
Copyright © 2011-2022 走看看