📜  搜索文件 java (1)

📅  最后修改于: 2023-12-03 15:10:11.967000             🧑  作者: Mango

搜索文件 Java

在开发和生产环境中,我们经常需要在文件系统中搜索特定的文件。Java提供了多种方式来搜索文件。

1. 使用Java 8 Stream API

Java 8 引入了 Stream API,可以方便地对集合进行筛选和操作,也可以用来搜索文件。以下代码演示了如何使用Stream API搜索特定目录下的所有 .txt 文件。

Path directory = Paths.get("path/to/directory");
try (Stream<Path> stream = Files.walk(directory)) {
    List<String> txtFiles = stream
            .map(String::valueOf)
            .filter(path -> path.endsWith(".txt"))
            .collect(Collectors.toList());
    txtFiles.forEach(System.out::println);
}

在上述代码中,我们使用 Files.walk(directory) 遍历目录下的所有文件和子目录。接着我们调用 filter() 方法将结果中的所有非 .txt 文件筛除。最后,我们将结果保存到 List<String> 中,使用 forEach() 打印结果。

2. 使用Apache Commons IO

Apache Commons IO 提供了丰富的文件操作工具方法。以下是如何使用 FileUtils.listFiles() 方法来搜索特定目录下的所有 .txt 文件的代码。

String directory = "path/to/directory";
Collection<File> txtFiles = FileUtils.listFiles(new File(directory), new String[]{"txt"}, true);
for (File file : txtFiles) {
    System.out.println(file.getAbsolutePath());
}

在上述代码中,我们使用 FileUtils.listFiles() 方法,传递目录路径,要搜索的扩展名数组和子目录搜索标志。返回的结果是 Collection<File>,遍历需要一个 for 循环。

3. 使用Java自带的File API

Java 自带的 FileDirectoryStream 类也提供了很多搜索功能。以下是如何使用 Files.newDirectoryStream() 方法搜索特定目录下的所有文件的代码。

Path directory = Paths.get("path/to/directory");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(directory)) {
    for (Path path : stream) {
        System.out.println(path.getFileName());
    }
}

在上述代码中,我们使用 Files.newDirectoryStream() 遍历目录下的所有文件和子目录。我们可以用 getFileName() 方法获取主干路径。

无论你选择哪种搜索文件的方式,都应该注意权限和安全。务必检查你的代码,确保只从受信任的目录中搜索文件,避免遍历并搜索整个文件系统。