首页 > 技术文章 > java删除附件或者文件夹

xianz666 2021-03-28 14:08 原文

package com.zjn.IO;

import java.io.File;

public class DeleteFileController {
	/**   
     * 删除文件,可以是单个文件或文件夹   
     * @param   fileName    待删除的文件名   
     * @return 文件删除成功返回true,否则返回false   
     */   
    public static boolean delete(String fileName){    
        File file = new File(fileName);    
        if(!file.exists()){    
            System.out.println("删除文件失败:"+fileName+"文件不存在");    
            return false;    
        }else{    
            if(file.isFile()){    
                //删除文件     
                return deleteFile(fileName);    
            }else{ 
            	//删除文件夹
                return deleteDirectory(fileName);    
            }    
        }    
    }    
         
    /**   
     * 删除单个文件   
     * @param   fileName    被删除文件的文件名   
     * @return 单个文件删除成功返回true,否则返回false   
     */   
    public static boolean deleteFile(String fileName){    
        File file = new File(fileName);    
        if(file.isFile() && file.exists()){    
            file.delete();    
            System.out.println("删除单个文件"+fileName+"成功!");    
            return true;    
        }else{    
            System.out.println("删除单个文件"+fileName+"失败!");    
            return false;    
        }    
    }    
         
    /**   
     * 删除目录(文件夹)以及目录下的文件   
     * @param   dir 被删除目录的文件路径   
     * @return  目录删除成功返回true,否则返回false   
     */   
    public static boolean deleteDirectory(String dir){    
        //如果dir不以文件分隔符结尾,自动添加文件分隔符    
        if(!dir.endsWith(File.separator)){    
            dir = dir+File.separator;    
        }    
        File dirFile = new File(dir);    
        //如果dir对应的文件不存在,或者不是一个目录,则退出    
        if(!dirFile.exists() || !dirFile.isDirectory()){    
            System.out.println("删除目录失败"+dir+"目录不存在!");    
            return false;    
        }    
        boolean flag = true;    
        //删除文件夹下的所有文件(包括子目录)    
        File[] files = dirFile.listFiles();    
        for(int i=0;i<files.length;i++){    
            //删除子文件    
            if(files[i].isFile()){    
                flag = deleteFile(files[i].getAbsolutePath());    
                if(!flag){    
                    break;    
                }    
            }    
            //删除子目录    
            else{    
                flag = deleteDirectory(files[i].getAbsolutePath());    
                if(!flag){    
                    break;    
                }    
            }    
        }    
             
        if(!flag){    
            System.out.println("删除目录失败");    
            return false;    
        }    
             
        //删除当前目录    
        if(dirFile.delete()){    
            System.out.println("删除目录"+dir+"成功!");    
            return true;    
        }else{    
            System.out.println("删除目录"+dir+"失败!");    
            return false;    
        }    
    }    
  //删除文件夹
  //param folderPath 文件夹完整绝对路径
 
       public static void delFolder(String folderPath) {
       try {
          delAllFile(folderPath); //删除完里面所有内容
          String filePath = folderPath;
          filePath = filePath.toString();
          java.io.File myFilePath = new java.io.File(filePath);
          myFilePath.delete(); //删除空文件夹
       } catch (Exception e) {
         e.printStackTrace(); 
       }
  }
 
  //删除指定文件夹下所有文件
  //param path 文件夹完整绝对路径
     public static boolean delAllFile(String path) {
         boolean flag = false;
         File file = new File(path);
         if (!file.exists()) {
           return flag;
         }
         if (!file.isDirectory()) {
           return flag;
         }
         String[] tempList = file.list();
         File temp = null;
         for (int i = 0; i < tempList.length; i++) {
            if (path.endsWith(File.separator)) {
               temp = new File(path + tempList[i]);
            } else {
                temp = new File(path + File.separator + tempList[i]);
            }
            if (temp.isFile()) {
               temp.delete();
            }
            if (temp.isDirectory()) {
               delAllFile(path + "/" + tempList[i]);//先删除文件夹里面的文件
               delFolder(path + "/" + tempList[i]);//再删除空文件夹
               flag = true;
            }
         }
         return flag;
       }
    
    public static void main(String[] args) {    
        //String fileName = "g:/temp/xwz.txt";    
        //DeleteFileUtil.deleteFile(fileName);    
        String fileDir = "D:\\logo.png";    
        //DeleteFileUtil.deleteDirectory(fileDir);    
        DeleteFileController.delete(fileDir);
        System.out.println("删除文件结束");
        DeleteFileController t = new DeleteFileController();
        delFolder("D:/zz");
        System.out.println("deleted");
 
             
    }    


}

  

推荐阅读