`
zjfgf
  • 浏览: 12009 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
FileUtils_Ver1.0 io-(文件删除、查找)
package day0703;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;

/**
 * 提供文件操作的方法(1、删除目录中的所有内容,2、查找用户需要的文件)
 * 
 * @author Administrator
 * 
 */
public class FileUtils {
	/**
	 * 删除指定目录中的所有内容
	 * 
	 * @param dir
	 *				将要删除的目录
	 * @return 
	 * 				true删除成功 false删除失败---递归尽量写成private方法,public去调用它
	 */
	public static boolean deleteDir(File dir){
		if(dir==null ||!dir.exists()||!dir.isDirectory()){
			throw new IllegalArgumentException("目录必须有效");//抛出错误的参数异常
		}
		return doDelete(dir);
	}
	/**
	 * 
	 * deleteDir()重载
	 * 
	 * @param pathname 
	 * 					将要删除的目录路径
	 * @return 
	 * 					返回deleteDir()的返回值,true:删除成功,false:删除失败
	 */
	public static boolean deleteDir(String pathname){
		File file=new File(pathname);
		return deleteDir(file);
	}
	/**
	 * 递归删除某目录下的所有内容
	 * 
	 * @param dir
	 * 					将要删除的目录		
	 * @return
	 * 					true:删除成功,false:删除失败
	 */
	private static boolean doDelete(File dir) {
		File[] subs= dir.listFiles();
		//delete subs
		for(File sub:subs){
			if(sub.isDirectory()){
				doDelete(sub);//递归
			}else{
				sub.delete();
			}
		}
		return dir.delete();
	}
	/**
	 * 
	 * @param dir
	 *				要查找的目录
	 * @param ff
	 *				符合用户需要的文件过滤器
	 * @return 
	 * 				若没有找到匹配的文件,则返回null;若找到,则返回数组(包含所有找到的匹配文件)
	 */
	public static File[] findFiles(File dir, FileFilter ff) {
		List<File> fileList = new ArrayList<File>();
		//把找到的文件放入fileList
		doFind(fileList,dir,ff);
		return fileList.toArray(new File[]{});
		//把集合变成数组
		
	}
	/**
	 * findFiles()重载
	 * @param dir
	 * 					要查找的目录
	 * @param suffix
	 * 					
	 * @return
	 */
	public static File[] findFiles(File dir,final String suffix){
		return findFiles(dir,new FileFilter(){
			public boolean accept(File pathname){
				if(pathname.isFile()&&pathname.getName().endsWith(suffix)){
					return true;
				}
				return false;
			}
		});
	}
	/**
	 * 
	 * @param fileList
	 * 					将查找到的文件放入此容器中
	 * @param dir
	 * 					将要查找的目录
	 * @param ff
	 * 					符合需要的文件过滤器		
	 */
	private static void doFind(List<File> fileList,File dir,FileFilter ff){
		File[] subs=dir.listFiles();
		for(File sub:subs){
			if(sub.isDirectory()){
				doFind(fileList,sub,ff);
			}else{
				if(ff.accept(sub)){
					fileList.add(sub);
				}
			}
		}
		
	}
	public static void main(String[] args) {
		
		File[] file = findFiles(new File("F:/a"), new MyFileFilter());
	}

}
Global site tag (gtag.js) - Google Analytics