Java检查14位数字的文件夹名称

时间:2014-06-09 16:56:57

标签: java regex directory digits

我正在尝试让我的java程序在目录中搜索包含单词“natives”的任何其他文件夹。我有这一切工作。但为了确保更高的安全性,我还希望检查数字,看看实际的文件夹名为“1.7.4-natives-16411115736623”。

总而言之,我希望我的java程序检查名称中是否包含“natives”的目录。如果是,请检查文件夹名称是否包含单词natives后面的“-16411115736623”。请记住,这些数字是随机的,但总是14位数。

这是我目前的代码:

'文件夹=新文件(System.getProperty(“user.home”)+ File.separator +“/ Library / Application Support / minecraft / versions /”);

File [] listOfFiles = folder.listFiles();

outerloop:

            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");
                        }
                    }
                }
            }'

2 个答案:

答案 0 :(得分:2)

同时执行这两项操作

无需再次检查。正则表达式允许您检查两者文件夹名称包含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 ...}

答案 1 :(得分:1)

内部循环的

使用正则表达式方法String.matches

正则表达式相当简单,因为你知道它将是14位

if(name.matches("[0-9]{14}")){
...
}