通配符目录搜索问题

时间:2018-09-12 17:38:09

标签: java file wildcard

我在尝试使用通配符验证目录中文件的存在时遇到问题。

该方法应确定在当前目录中是否可以找到名称为FAACIFP_(year)(cycle).DAT的文件。

我尝试使用IF / ELSE运行PathMaker.matches("glob:FAACIFP_18"),并且在测试它时,它总是评估为TRUE。因此,我尝试了一个lambda函数,但找不到该文件。

下面的lambda是否应该打印文件名,否则我会误解/滥用它吗?

static void getCnvrtdCifpName() throws IOException{
        String cnvFileName = "FAACIFP_"+Year.now()
                .format(DateTimeFormatter.ofPattern("yy"));
        Path cnvFilePath = Paths.get(System.getProperty("user.dir"));
        Files.find(cnvFilePath,0,(path,attr) -> 
                path.getFileName().startsWith(cnvFileName)).forEach(System.out::println);
        System.out.println("EVALUATING METHOD....\t SEARCH PATH: "+cnvFilePath
                +" \n\t\t\t FILE STRING: "+cnvFileName);
    }

输出:

run:
Located RAW CIFP file FAACIFP18

EVALUATING METHOD....    SEARCH PATH: C:\Users\u314170\Documents\Personal\Java\NetBeans\A424Parser 
             FILE STRING: FAACIFP_18
BUILD SUCCESSFUL (total time: 0 seconds)

2 个答案:

答案 0 :(得分:0)

两个问题: 1)将查找呼叫中的最大深度更改为1(从零开始) 2)path.getFileName()返回完整的路径名。您将只需要评估文件名部分(请查看getName(getNameCount()-1)

答案 1 :(得分:0)

在提出建议之后,我终于找到了解决方法:

static void getCnvrtdCifpName() throws IOException{
        String cnvFileName = "FAACIFP_"+Year.now()
                .format(DateTimeFormatter.ofPattern("yy"));
        Path cnvFilePath = Paths.get(System.getProperty("user.dir"));
        DirectoryStream<Path> cnvFileStream = Files.newDirectoryStream(cnvFilePath,cnvFileName+"*");
        System.out.println("EVALUATING METHOD....\t SEARCH PATH: "+cnvFilePath
                +" \n\t\t\t FILE STRING: "+cnvFileName);
        List cnvDirList = new ArrayList();
        for(Path file: cnvFileStream){
            cnvDirList.add(file.getFileName().toString());
        }
        cnvFileStream.close();
        System.out.println(cnvDirList);
    }

输出:

run:
EVALUATING METHOD....    SEARCH PATH: C:\Users\u314170\Documents\Personal\Java\NetBeans\A424Parser 
             FILE STRING: FAACIFP_18
[FAACIFP_1808.dat, FAACIFP_1810.txt, FAACIFP_1811.txt]
BUILD SUCCESSFUL (total time: 0 seconds)

在学习Java的过程中,我真的很喜欢解决问题的挑战。那里的资源太多了,解决问题的方法也很多。