0

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

那么我应该使用哪个正则表达式以及如何搜索它?我对java不太了解。如果你帮助我,我会很高兴。

String regularExpression = ?

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

4 回答 4

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 上,Path按照Paths.get. 此方法接受一个或多个参数,这些参数共同构建路径。在我的示例中,参数/tmpsubdirsubsubdir导致/tmp/subdir/subsubdir. 在 Windows 上,您可能会从 和 等段构建C:路径Desktop

于 2013-10-18T10:13:25.873 回答
2

这是答案:

String regularExpression = ".*\.txt";
于 2013-10-18T10:10:38.650 回答
0

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

于 2013-10-18T10:16:14.667 回答
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
                        }
                    }
                }
于 2013-10-18T10:43:22.830 回答