在 Java 中,若要打印出每个文件夹里的所有文件名,可以使用递归方法来遍历文件夹及其子文件夹。下面将分别介绍使用传统的 java.io
包和 Java 7 引入的 java.nio.file
包来实现该功能。
使用 java.io
包实现
import java.io.File;
public class PrintFilesInDirectory {
public static void main(String[] args) {
// 指定要遍历的文件夹路径
String directoryPath = "your_directory_path";
File directory = new File(directoryPath);
if (directory.exists() && directory.isDirectory()) {
printFiles(directory);
} else {
System.out.println("指定的路径不是一个有效的文件夹。");
}
}
public static void printFiles(File directory) {
// 获取该文件夹下的所有文件和文件夹
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
// 如果是文件夹,则递归调用 printFiles 方法继续遍历
printFiles(file);
} else {
// 如果是文件,则打印文件名
System.out.println(file.getAbsolutePath());
}
}
}
}
}
代码解释
-
main
方法:首先指定要遍历的文件夹路径,创建File
对象,检查该路径是否为有效的文件夹。若有效,则调用printFiles
方法开始遍历。 -
printFiles
方法:使用listFiles
方法获取指定文件夹下的所有文件和文件夹。对于每个子项,判断其是否为文件夹,若是则递归调用printFiles
方法;若为文件,则打印其绝对路径。
使用 java.nio.file
包实现
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
public class PrintFilesUsingNio {
public static void main(String[] args) {
// 指定要遍历的文件夹路径
Path directory = Paths.get("your_directory_path");
try {
Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
// 打印文件的绝对路径
System.out.println(file.toAbsolutePath());
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码解释
-
main
方法:指定要遍历的文件夹路径,创建Path
对象。使用Files.walkFileTree
方法遍历文件夹树。 -
SimpleFileVisitor
类:重写visitFile
方法,当访问到文件时,打印其绝对路径,并返回FileVisitResult.CONTINUE
表示继续遍历。
注意事项
- 将
"your_directory_path"
替换为你实际要遍历的文件夹路径。 - 在使用
java.io
包时,listFiles
方法可能返回null
,需要进行空值检查。 - 在使用
java.nio.file
包时,需要处理可能抛出的IOException