【编程练习】打印一个文件夹(子文件夹)下,文件名包含该关键词的文件列表(文件名、路径,修改时间,大小)

package jayxigua.coding.zfb._20180512;

import java.io.File;
import java.util.Date;

/**
 * 问题描述:打印一个文件夹(子文件夹)下,文件名包含该关键词的文件列表(文件名,创建时间,大小)
 * 技术点:file常用接口,边界场景,递归
 * 难度:★★☆
 * 接口文档:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
 * 实现参考:
 * 文件大小:https://www.cnblogs.com/hellowhy/p/7238570.html
 * @author jayxigua
 *
 */
public class FileFind {
    final static String res_Format = "文件名 %s,路径%s,最近修改时间 %s,大小 %s KB";

    public static void main(String[] args) {
        String dirPath = "/Users/Program/workspace_mars/maven_helloworld/";
        String keyWord = "Demo";
        File dir = new File(dirPath);
        findFileFromDir(dir, keyWord);
    }

    static void findFileFromDir(File dir, String keyWord) {
        if (dir.exists()) {
            if (dir.isDirectory()) {
                File[] files = dir.listFiles();
                final int fileL = files.length;
                for (int i = 0; i < fileL; i++) {
                    File curFile = files[i];
                    // System.out.println("[debug] curFile =" + curFile);

                    if (!curFile.isDirectory()) {
                        if (curFile.getName().contains(keyWord)) {
                            System.out.println(
                                    "result " + String.format(res_Format, curFile.getName(), curFile.getAbsolutePath(),
                                            new Date(curFile.lastModified()), curFile.length() / 1024));
                        }
                    } else {
                        // 目录,递归
                        findFileFromDir(curFile, keyWord);
                    }
                }
            } else {
                System.out.println("[warn] 该文件非文件夹");
            }
        } else {
            System.out.println("[error] 路径不存在");
        }
    }
}

你可能感兴趣的:(【编程练习】打印一个文件夹(子文件夹)下,文件名包含该关键词的文件列表(文件名、路径,修改时间,大小))