📅  最后修改于: 2023-12-03 15:27:10.739000             🧑  作者: Mango
在Java中,我们可以使用File类来操作文件和目录。当我们需要搜索指定目录下的所有文件时,可以使用递归来实现,但是这样的代码不够简洁明了。幸运的是,Java 8 中引入了一个新的类Files
,它提供了一些便捷的方法,使得我们可以更容易地搜索指定目录下的所有文件。
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
public class FileSearch {
public static void main(String[] args) throws IOException {
String root = "/path/to/directory"; // 指定搜索路径
String target = "target"; // 指定搜索文件名
List<String> results = new ArrayList<>();
Files.walkFileTree(Paths.get(root), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (file.getFileName().toString().startsWith(target)) {
results.add(file.toString());
}
return FileVisitResult.CONTINUE;
}
});
results.forEach(System.out::println);
}
}
代码分为两部分,第一部分是指定搜索路径和搜索文件名。第二部分则是使用Files.walkFileTree
方法来遍历指定目录下的所有文件,并通过实现SimpleFileVisitor
类的visitFile
方法来查找指定文件名的文件。
# 用于在目录中搜索文件的Java程序
在Java中,我们可以使用File类来操作文件和目录。当我们需要搜索指定目录下的所有文件时,可以使用递归来实现,但是这样的代码不够简洁明了。幸运的是,Java 8 中引入了一个新的类`Files`,它提供了一些便捷的方法,使得我们可以更容易地搜索指定目录下的所有文件。
## 代码实现
```java
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
public class FileSearch {
public static void main(String[] args) throws IOException {
String root = "/path/to/directory"; // 指定搜索路径
String target = "target"; // 指定搜索文件名
List<String> results = new ArrayList<>();
Files.walkFileTree(Paths.get(root), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (file.getFileName().toString().startsWith(target)) {
results.add(file.toString());
}
return FileVisitResult.CONTINUE;
}
});
results.forEach(System.out::println);
}
}
代码分为两部分,第一部分是指定搜索路径和搜索文件名。第二部分则是使用Files.walkFileTree
方法来遍历指定目录下的所有文件,并通过实现SimpleFileVisitor
类的visitFile
方法来查找指定文件名的文件。