Java读取文件夹下的所有文件
在Java中,有几种方法可以读取文件夹下的所有文件,以下是几种常见的实现方式:

(图片来源网络,侵删)
使用File.listFiles()方法
import java.io.File;
public class ListFiles {
public static void main(String[] args) {
File folder = new File("C:\\path\\to\\your\\folder");
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) {
System.out.println(file.getName());
}
}
}
}
}
使用Files.walk()方法(Java 8+)
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class ListFilesJava8 {
public static void main(String[] args) {
try (Stream<Path> paths = Files.walk(Paths.get("C:\\path\\to\\your\\folder"))) {
paths.filter(Files::isRegularFile)
.forEach(path -> System.out.println(path.getFileName()));
} catch (IOException e) {
e.printStackTrace();
}
}
}
递归读取所有子文件夹中的文件
import java.io.File;
public class ListFilesRecursive {
public static void main(String[] args) {
listFiles(new File("C:\\path\\to\\your\\folder"));
}
public static void listFiles(File folder) {
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
listFiles(file); // 递归调用
} else {
System.out.println(file.getAbsolutePath());
}
}
}
}
}
使用NIO.2的Files.newDirectoryStream()(Java 7+)
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class ListFilesNIO {
public static void main(String[] args) {
Path dir = Paths.get("C:\\path\\to\\your\\folder");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path file : stream) {
if (Files.isRegularFile(file)) {
System.out.println(file.getFileName());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意事项
- 路径分隔符:在Windows上使用反斜杠
\,在Unix/Linux上使用正斜杠,或者使用File.separator。 - 权限问题:确保程序有权限访问目标文件夹。
- 异常处理:实际应用中应该妥善处理可能抛出的异常。
- 性能考虑:对于非常大的目录结构,考虑使用流式处理(如Java 8的Files.walk())以避免内存问题。
选择哪种方法取决于你的Java版本和具体需求,Java 8的Files.walk()方法通常是最简洁和功能最强大的选择。

(图片来源网络,侵删)
