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 }
  • 相关阅读:
    linux查看CPU和内存信息
    linux yum命令详解
    查看文件中关键字前后几行的内容
    vue.js+web storm安装及第一个vue.js
    android GPS: code should explicitly check to see if permission is available
    ASP.NET MVC Identity 使用自己的SQL Server数据库
    阿里云服务器,tomcat启动,一直卡在At least one JAR was scanned for TLDs yet contained no TLDs就不动了
    ASP.NET MVC4 MVC 当前上下文中不存在名称“Scripts”
    python 将windows字体中的汉字生成图片的方法
    Java android DES+Base64加密解密
  • 原文地址:https://www.cnblogs.com/zhangzhixi/p/14364100.html
Copyright © 2011-2022 走看看