使用File文件工具类对指定类型文件进行筛选

一、使用File文件工具类对指定类型文件进行筛选

1、使用File文件工具类进行文件指定类型文件筛选
2、使用io流对文件进行copy
3、使用序列化与反序列化对对象进行存储及复原

  1. 我们要筛选指定类型的文件,首先得将筛选的文件和指定的类型以参数的形式传入筛选方法中;

/**
 * 1、使用File文件工具类进行文件指定类型文件筛选
 * @param fileDirectory 筛选文件
 * @param type 指定类型
 */
public void selectFile(File fileDirectory, String type) {
	...
}
  1. 先判断传入的 File 是否为空,再判断传入的 File 是否为文件夹;
	// 判断文件是否存在
	if (fileDirectory.exists()) {
	    // 如果文件存在,判断是否是文件夹
	    if (fileDirectory.isDirectory()) {
	    	// 如果为文件夹
	    	...
	    } else {
			// 如果为文件
			...
		}
	} else {
		// 如果文件不存在
		...
	}
  1. 如果传入文件不存在,则直接输出“该文件不存在!”;
	// 判断文件是否存在
	if (fileDirectory.exists()) {
	    // 如果文件存在,判断是否是文件夹
	    if (fileDirectory.isDirectory()) {
	    	// 如果为文件夹
	    	...
	    } else {
			// 如果为文件
			...
	}else {
        // 如果文件不存在
        System.out.println("该文件不存在!");
    }
  1. 若传入文件存在且类型为文件,则直接判断该文件是否为指定类型;(若指定类型为 txt 文件,由于可能存在 aaa.txt.bat 类型的文件,所以不能使用 String 中的 contains() 方法,故使用 Spring 中的 split() 方法以“.” 进行分割,取最后一位即该文件后缀);
// java.lang.string split 以点分割字符串时需注意
// 错误的做法
String fileDirectory="aaa.txt.bat";
String[] s=ip.split(".");//这种方式无法拆分字符串
// 正确的做法
String fileDirectory="aaa.txt.bat";
String[] s=ip.split("\\.");
	if (fileDirectory.exists()) {
	    // 如果文件存在,判断是否是文件夹
	    if (fileDirectory.isDirectory()) {
	    	// 如果为文件夹
	    	...
	    } else {
			// 如果为文件,以“.”分割文件名
			String[] split = fileDirectory.getName().split("\\.");
            // 获取指定类型的文件
            if (split[split.length-1].equals(type)) {
                System.out.println(fileDirectory.getAbsolutePath());
            }
	}else {
        // 如果文件不存在
        System.out.println("该文件不存在!");
    }
  1. 若传入文件存在且类型为文件夹,则遍历文件夹中内容,若内部文件为文件,则判断是否为指定类型;
	if (fileDirectory.exists()) {
	    // 如果文件存在,判断是否是文件夹
	    if (fileDirectory.isDirectory()) {
	    	// 如果是文件夹,遍历全部文件
            File[] arrFile = fileDirectory.listFiles();
            for (File file:arrFile) {
                // 再次判断是否是文件夹
                if (!file.isDirectory()) {
                    // 如果是文件,以“.”分割文件名
                    String[] split = file.getName().split("\\.");
                    // 获取指定类型的文件
                    if (split[split.length-1].equals(type)) {
                        System.out.println(file.getAbsolutePath() + "---" + file.getName());
                    }
                } else {
                    // 如果是文件夹
                    ...
                }
            }
	    } else {
			// 如果为文件,以“.”分割文件名
			String[] split = fileDirectory.getName().split("\\.");
            // 获取指定类型的文件
            if (split[split.length-1].equals(type)) {
                System.out.println(fileDirectory.getAbsolutePath());
            }
	}else {
        // 如果文件不存在
        System.out.println("该文件不存在!");
    }
  1. 若内部文件为文件夹,则递归调用本方法继续遍历;
	if (fileDirectory.exists()) {
	    // 如果文件存在,判断是否是文件夹
	    if (fileDirectory.isDirectory()) {
	    	// 如果是文件夹,遍历全部文件
            File[] arrFile = fileDirectory.listFiles();
            for (File file:arrFile) {
                // 再次判断是否是文件夹
                if (!file.isDirectory()) {
                    // 如果是文件,以“.”分割文件名
                    String[] split = file.getName().split("\\.");
                    // 获取指定类型的文件
                    if (split[split.length-1].equals(type)) {
                        System.out.println(file.getAbsolutePath() + "---" + file.getName());
                    }
                } else {
                    // 如果是文件夹,递归
                    selectFile(file,type);
                }
            }
	    } else {
			// 如果为文件,以“.”分割文件名
			String[] split = fileDirectory.getName().split("\\.");
            // 获取指定类型的文件
            if (split[split.length-1].equals(type)) {
                System.out.println(fileDirectory.getAbsolutePath());
            }
	}else {
        // 如果文件不存在
        System.out.println("该文件不存在!");
    }
  1. 完整代码;

1、使用File文件工具类进行文件指定类型文件筛选
2、使用io流对文件进行copy
3、使用序列化与反序列化对对象进行存储及复原

/**
 * 1、使用File文件工具类进行文件指定类型文件筛选
 * 2、使用io流对文件进行copy
 * 3、使用序列化与反序列化对对象进行存储及复原
 */
public class FileUtil {

    /**
     * 1、使用File文件工具类进行文件指定类型文件筛选
     * @param fileDirectory 文件
     * @param type 指定类型
     */
    public void selectFile(File fileDirectory, String type) {

        // 判断文件是否存在
        if (fileDirectory.exists()) {
            // 如果文件存在,判断是否是文件夹
            if (fileDirectory.isDirectory()) {
                // 如果是文件夹,遍历全部文件
                File[] arrFile = fileDirectory.listFiles();
                for (File file:arrFile) {
                    // 再次判断是否是文件夹
                    if (!file.isDirectory()) {
                        // 如果不是文件夹,以“.”分割文件名
                        String[] split = file.getName().split("\\.");
                        // 获取指定类型的文件
                        if (split[split.length-1].equals(type)) {
                            System.out.println(file.getAbsolutePath() + "---" + file.getName());
                        }
                    } else {
                        // 如果是文件夹,递归
                        selectFile(file,type);
                    }
                }
            } else {
                // 如果是文件
                String[] split = fileDirectory.getName().split(".");
                // 获取指定类型的文件
                if (split[split.length-1].equals(type)) {
                    System.out.println(fileDirectory.getAbsolutePath());
                }
            }
        } else {
            // 如果文件不存在
            System.out.println("该文件不存在!");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值