android基础篇------------java基础(10)(File工具类)

package com.homework;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Arrays;

public class FileUtil {
	/**
	 * 创建目录或文件
	 * 
	 */
	public static boolean createDir(File dir) {
		return dir.mkdirs();
	}

	public static boolean createFile(File file) {
		try {
			return file.createNewFile();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;

	}

	/**
	 * 删除指定目录
	 * 
	 * @param dir
	 *            指定将要删除的目录
	 * @return true删除成功 false删除失败
	 */
	public static boolean deleteDir(File dir) {
			File[] files = dir.listFiles();
			for (int i = 0; i < files.length; i++) {
				if (files[i].isFile()) {
					files[i].delete();
				}
				else {
					deleteDir(files[i]);
				}
		
		}
			return (dir.delete());
	}

	/**
	 * 找出指定目录(包括其子目录)下的所有符合用户需要的文件
	 * 
	 * @param fir
	 *            指定需要查找的目录
	 * @param filter
	 *            用户指定的条件
	 * @return 符合用户需要的多个File对象组成的File数组
	 */
	public static File[] findFiles(File fir, FileFilter fileFilter) {
		File[] array = fir.listFiles(fileFilter);
		return array;

	}

	/**
	 * 测试相关功能代码
	 */
	public static void main(String[] args) {
		File file = new File("D:\\test\\test");
		System.out.println("创建目录" + createDir(file));
		File file2 = new File("D:\\test\\test\\test.txt");
		System.out.println("创建文件" + createFile(file2));
		File[] files = findFiles(file, new FileFilter() {

			@Override
			public boolean accept(File pathname) {
				return pathname.getName().endsWith(".txt");
			}

		});
		System.out.println(Arrays.toString(files));
		System.out.println(deleteDir(file));
	}

}

改进:

/**
	 * 找出指定目录(包括其子目录)下的所有符合用户需要的文件
	 * @param fir 指定需要查找的目录
	 * @param filter 用户指定的条件
	 * @return 符合用户需要的多个File对象组成的File数组
	 */
	//复杂问题的解决思路:化大为小,分而治之,能写的先写了
	public static File[] findFiles(File dir, FileFilter filter){
		//1、数组长度不可确定,生成一个List
		List<File> fileList = new ArrayList<File>();
		//2、把符合条件的File放到list中
		doFind(fileList, dir, filter);
		//3、将List转换为File[]返回
		return fileList.toArray(new File[]{});
	}
	//比较复杂的逻辑,可以封装成一个private方法!
	private static void doFind(List<File> fileList, File dir, FileFilter filter){
		File[] subs = dir.listFiles();
		for(File sub : subs){
			if(sub.isDirectory())
				doFind(fileList, sub, filter);
			else{
				if(filter.accept(sub)){
					fileList.add(sub);
				}
			}
		}
	}
	//高门槛和低门槛的都要提供
	public static File[] findFiles(String dirName, final String suffix){
		return findFiles(new File(dirName),
					new FileFilter() {
					@Override
					public boolean accept(File file) {
						if(file.isFile() && file.getName().endsWith(suffix))
							return true;
						else
							return false;
					}
				});
	}



 

你可能感兴趣的:(android基础篇------------java基础(10)(File工具类))