Java文件操作工具类详解编程语言

移动目录或者文件, 将一个文件夹下所有文件移动到另一个文件夹下,将指定文件移动到目的目录,刪除指定目录和其下所有子目录和文件,如果指定的是文件则直接删除

import java.io.File; 
  
/** 
 *  
 * @Title : FileUtils 
 * @File Name : FileUtils.java 
 * @Description : 文件操作工具类 
 * @Date : 2014年8月10日 
 * @author : 王鸿运 
 * @version : 1.0 
 * @Others : 
 * @History 1.<br/> 
 *          Date : <br/> 
 *          Author : <br/> 
 *          Modification: <br/> 
 */ 
public class FileUtils { 
      
    public static final String FILE_SEP = System.getProperty("file.separator"); 
      
    /** 
     *  
     * @Function  :  moveFile 
     * @Desc  :  移动目录或者文件 
     * @Author  : 王鸿运   
     * @param srcFilePath  源文件(目录)路径 
     * @param destFilePath  目的文件(目录)路径 
     * @return  true:操作成功,false:操作失败 
     */ 
    public static boolean moveFile(String srcFilePath, String destFilePath) { 
        File srcFile = new File(srcFilePath); 
        if (!srcFile.exists()) { 
            return false; 
        } 
          
        if (srcFile.isDirectory()) { 
            File[] subFiles = srcFile.listFiles(); 
            for (File file : subFiles) { 
                moveFile(file.getAbsolutePath(), destFilePath +FILE_SEP+ file.getName()); 
            } 
        } 
          
        File destFile = new File(destFilePath); 
        File destParentFile = destFile.getParentFile(); 
        if (!destParentFile.exists()) { 
            destParentFile.mkdirs(); 
        } 
        srcFile.renameTo(destFile); 
          
        return true; 
    } 
      
    /** 
     * @Function  :  moveChildren 
     * @Desc  :  指定目录下所有的子目录和文件到目的目录 
     * @Author  : 王鸿运   
     * @param srcFilePath  源目录路径 
     * @param destFilePath  目的路径 
     * @return  true:操作成功,false:操作失败 
     */ 
    public static boolean moveAllChildren(String srcFilePath, String destFilePath) { 
        File srcDir = new File(srcFilePath); 
        if (!srcDir.exists() || !srcDir.isDirectory()) { 
            return false; 
        } 
          
        File destDir = new File(destFilePath); 
        if (destDir.exists()) { 
            if ( destDir.isFile()) { 
                destDir.delete(); 
                destDir = new File(destFilePath); 
                destDir.mkdir(); 
            } 
        } else { 
            destDir.mkdirs(); 
        } 
          
        File[] children = srcDir.listFiles(); 
        for (File file : children) { 
            moveFile(file.getAbsolutePath(), destFilePath); 
        } 
          
        return true; 
    } 
      
    /** 
     *  
     * @Function  :  moveFiles 
     * @Desc  :  将指定文件移动到目的目录 
     * @Author  : 王鸿运   
     * @param srcFiles 源文件,支持多个路径参数 
     * @param destDirPath 目的目录 
     * @return true:操作成功,false:操作失败 
     */ 
    public static boolean moveFiles(String destDirPath, String ... srcFiles){ 
        if (srcFiles == null || srcFiles.length == 0) { 
            return false; 
        } 
        File destDir = new File(destDirPath); 
          
        boolean destExists = true; 
        if (!destDir.exists()) { 
            destExists = destDir.mkdirs();  
        } else if(destDir.isFile()){ 
            return false; 
        } 
          
        if (!destExists) { 
            return false; 
        } 
          
        for (String srcFilePath : srcFiles) { 
            File srcFile = new File(srcFilePath); 
            if (srcFile.exists() && srcFile.isFile()) { 
                srcFile.renameTo(new File(destDirPath + FILE_SEP + srcFile.getName())); 
            } 
        } 
        return true; 
    } 
      
    /** 
     *  
     * @Function : deleteSelfAndAllChildren 
     * @Desc : 刪除指定目录和其下所有子目录和文件,如果指定的是文件则直接删除 
     * @Author : 王鸿运 
     * @param dirPath 源目录或文件路径 
     * @return true:删除成功,false:删除失败 
     */ 
    public static boolean deleteSelfAndAllChildren(String dirPath) { 
        File srcFile = new File(dirPath); 
        if (!srcFile.exists()) { 
            return false; 
        } 
          
        if (srcFile.isFile()) { 
            srcFile.delete(); 
        } else { 
            File[] children = srcFile.listFiles(); 
              
            if (children.length == 0) { 
                srcFile.delete(); 
            } else { 
                for (File file : children) {//先删除子文件和目录 
                    deleteSelfAndAllChildren(file.getAbsolutePath()); 
                } 
                //再删除本身 
                srcFile.delete(); 
            } 
        } 
        return true; 
    } 
      
    /** 
     *  
     * @Function  :  deleteAllChildren 
     * @Desc  :  删除一个目录下所有的子目录和文件 
     * @Author  : 王鸿运   
     * @param dirPath 
     * @return true:删除成功,false:删除失败 
     */ 
    public static boolean deleteAllChildren(String dirPath){ 
        File dir = new File(dirPath); 
        if (!dir.exists()) { 
            return false; 
        } 
        File[] children = dir.listFiles(); 
        for (File file : children) { 
            deleteSelfAndAllChildren(file.getAbsolutePath()); 
        } 
          
        return true; 
    } 
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10976.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论