我试图使我的Java程序在目录中搜索包含单词“ natives”的任何其他文件夹。我有所有的工作。但是为了确保更高的安全性,我还希望查看实际文件夹来检查数字是否为“ 1.7.4-natives-16411115736623”。
总之,我希望我的java程序检查名称中是否包含“ natives”的目录。如果是这样,请检查文件夹名称是否在单词natives后面包含“ -16411115736623”。请记住,这些数字是随机的,但始终为14位数字。
这是我当前的代码:
“文件文件夹=新文件(System.getProperty(“ user.home”)+ File.separator +“ /库/应用程序支持/ minecraft / versions /”);
File [] listOfFiles = folder.listFiles();
外循环:
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isDirectory()) {
String filePathString = (System.getProperty("user.home")+"/AppData/Roaming/.minecraft/versions/"+listOfFiles[i].getName()+"/");
File folder2 = new File(filePathString);
File[] listOfFiles2 = folder2.listFiles();
for (int f = 0; f < listOfFiles2.length; f++){
if(listOfFiles2[f].getName().contains("natives")) {
mcRunning = true;
System.out.println(listOfFiles2[f]);
System.out.println("Folder Exists");
Utils.verifyJars(filePathString);
}else{
System.out.println(listOfFiles2[f]);
System.out.println("Folder does Exist");
}
}
}
}'
最佳答案
同时做
无需再次检查。正则表达式允许您一次检查文件夹名称中是否包含natives
,以及是否在natives
后面加上破折号和14位数字。
使用此正则表达式:natives-\d{14}
或者,如果14位数字必须终止文件夹名称,请使用natives-\d{14}$
(否则您可以匹配some-natives-0123456789012311111 and my dog
)
要在具有if(listOfFiles2[f].getName().contains("natives"))
的代码中执行此操作,可以改用以下代码:
// before the outer for loop
Pattern regex = Pattern.compile("natives-\\d{14}$");
// later
Matcher regexMatcher = regex.matcher(listOfFiles2[f].getName());
if(regexMatcher.find()) {... success ...}