java正则表达式查找所有.txt

时间:2013-10-18 10:05:54

标签: java regex path

我正在尝试选择已知目录中的所有.txt文件。 例如我知道路径:C:/../桌面/ 现在我想要获取桌面上的所有.txt文件。

那么我应该使用哪个regularExpression以及如何搜索它?关于java,我不太了解knowlegde。如果你帮助我,我会非常高兴。

String regularExpression = ?

String path = "C:/../Desktop/";
Pattern pattern = Pattern.compile(regularExpression);
boolean isMatched = Pattern.matches(regularExpression,path);

4 个答案:

答案 0 :(得分:5)

使用Files.newDirectoryStream

import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class App {

    public static void main(String[] args) throws Exception {
        Path dir = Paths.get("/tmp", "subdir", "subsubdir");
        try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.txt")) {
            for (Path path : stream) {
                System.out.println(path.getFileName());
            }
        }    
    }
}

在Windows上,按照Paths.get所述构建目录的Path。此方法接受一个或多个参数,这些参数一起构建路径。在我的示例中,参数/tmpsubdirsubsubdir会生成/tmp/subdir/subsubdir。在Windows上,您可能会构建来自C:Desktop等段的路径。

答案 1 :(得分:2)

以下是答案:

String regularExpression = ".*\.txt";

答案 2 :(得分:0)

"path".endsWith(".txt")会更快

答案 3 :(得分:0)

尝试此操作来处理txt文件,这将获取根文件夹和内部文件夹中的所有文件。

    public static void main(String[] arg"s) throws Exception {
     File dir = new File("YOUR_ROOT_FILE_PATH");
                    File[] dirs = dir.listFiles();
                    parseFiles(dirs);
}

        public static void parseFiles(File[] files) throws Exception {
                for (File file : files) {
                    if (file.isDirectory()) {
                        parseFiles(file.listFiles());
                    } else {
                        if(file.getAbsolutePath().endsWith(".txt"){
        //do ur stuff here or call a function and pass this file as argument
                        }
                    }
                }