猿问

通配符目录搜索问题

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


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


我试过PathMaker.matches("glob:FAACIFP_18")用 IF/ELSE运行一个,当我测试它时,它总是会评估为 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)


繁星点点滴滴
浏览 156回答 2
2回答

UYOU

两个问题:1) 将 find 调用中的 maxdepth 更改为 1(从零开始) 2) path.getFileName() 返回完整路径名。您将只想评估文件名部分(查看 getName(getNameCount()-1)
随时随地看视频慕课网APP

相关分类

Java
我要回答