【发布时间】:2018-09-12 17:38:08
【问题描述】:
我在尝试使用通配符验证目录中是否存在文件时遇到了问题。
该方法应该确定是否可以在当前目录中找到名称为 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)
【问题讨论】:
-
FAACIFP18没有_(FAACIFP_18)? -
那是我的错......我有两种方法正在运行,一种是寻找“FAACIFP(year)”,它可以工作并输出“RAW CIFP file FAACIFP(year)”。这是查看文件是否已转换为“FAACIFP_(year)(cycle)”的第二种方法。我有其他一切工作,只是没有找到通配符。
-
哈!
path.getFileName().startsWith(cnvFileName)应该是path.getFileName().toString().startsWith(cnvFileName)并且深度可能是 1。 -
谢谢,乔普!我想出了另一种方法来实现我的目标。但是,我将测试您的方法,以便获得更好的经验。我肯定在努力解决的一件事是方法链接的顺序。那,并在 OOP 方面重新思考。这条老狗开始用 MS-BASIC 编程,并在这里/那里涉足 Pascal 和 C。所以,OOP 是一种看待事物的新方式。再次感谢您的帮助!