使用包含小数的数字通配符检查文件夹是否存在
Check if folder exists using a numeric wildcard including decimals
我正在尝试编写代码来检查 Acrobat xx.x 文件夹是否存在于用户的 PC 上,其中 xx.x
代表潜在的 Acrobat 版本号,例如 Acrobat 10.0 或 Acrobat 11.1 . 意思是我不知道 xx.x 会是什么 。找到的答案 here 似乎假设我知道通配符的值,但我不知道。
目的是最终将.js文件写入目录...\Program Files\Adobe\Acrobat xx.x\Acrobat\Javascripts
到目前为止,我确定是否安装了 32/64 位 OS,并将 Program Files 路径设置为 progFiles
。假设安装了 Adobe,那么我需要使用这个路径来确定 Acrobat xx.x 是否是一个子文件夹,例如:
folderToFind = new File(progFiles + "\Adobe\"+"\Acrobat 11.1");
其中 11.1
可以是 0.1 到 99.9 之间的任何数字。然后我可以通过以下方式识别它的存在:
if (folderToFind.exists())
{
System.out.println("Acrobat folder found");
}
一个明显的方法是创建一个循环,检查是否存在每一种可能性。这似乎是多余和不必要的。我希望有更有效的方法,例如:
if (progFiles + "\Adobe\"+"\Acrobat **.*\Acrobat\Javascripts".exists()){
// ...
}
有什么想法吗?谢谢
您使用 FileFilter
然后寻找符合您描述的文件:
杂技演员\d{1,2}\.\d
示例:
File dir = new File(path);
File[] matchingFiles = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
String regex = "Acrobat \d{1,2}\.\d";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(pathname.getName());
return m.matches();
}
});
for(File f : matchingFiles) {
System.out.println(f.getName());
}
您可以完全控制如何构建您的模式
我正在尝试编写代码来检查 Acrobat xx.x 文件夹是否存在于用户的 PC 上,其中 xx.x
代表潜在的 Acrobat 版本号,例如 Acrobat 10.0 或 Acrobat 11.1 . 意思是我不知道 xx.x 会是什么 。找到的答案 here 似乎假设我知道通配符的值,但我不知道。
目的是最终将.js文件写入目录...\Program Files\Adobe\Acrobat xx.x\Acrobat\Javascripts
到目前为止,我确定是否安装了 32/64 位 OS,并将 Program Files 路径设置为 progFiles
。假设安装了 Adobe,那么我需要使用这个路径来确定 Acrobat xx.x 是否是一个子文件夹,例如:
folderToFind = new File(progFiles + "\Adobe\"+"\Acrobat 11.1");
其中 11.1
可以是 0.1 到 99.9 之间的任何数字。然后我可以通过以下方式识别它的存在:
if (folderToFind.exists())
{
System.out.println("Acrobat folder found");
}
一个明显的方法是创建一个循环,检查是否存在每一种可能性。这似乎是多余和不必要的。我希望有更有效的方法,例如:
if (progFiles + "\Adobe\"+"\Acrobat **.*\Acrobat\Javascripts".exists()){
// ...
}
有什么想法吗?谢谢
您使用 FileFilter
然后寻找符合您描述的文件: 杂技演员\d{1,2}\.\d
示例:
File dir = new File(path);
File[] matchingFiles = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
String regex = "Acrobat \d{1,2}\.\d";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(pathname.getName());
return m.matches();
}
});
for(File f : matchingFiles) {
System.out.println(f.getName());
}
您可以完全控制如何构建您的模式