在 Java 中,若要打印出每个文件夹里的所有文件名,可以使用递归方法来遍历文件夹及其子文件夹。下面将分别介绍使用传统的 java.io
包和 Java 7 引入的 java.nio.file
包来实现该功能。
使用 java.io
包实现
java">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
包实现
java">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>() {@Overridepublic 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
表示继续遍历。