📜  在目录中遍历的Java程序(1)

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

在目录中遍历的Java程序

在Java编程中,经常需要遍历一个目录中的所有文件或目录,比如统计一个目录下面所有文件的大小或者找到一个目录下面所有符合特定规则的文件。本文将介绍如何在Java程序中遍历一个目录。

使用Java NIO遍历目录

Java NIO (New IO) 是Java 1.4引入的一种新的IO API,其中包含了遍历目录的方法。使用Java NIO遍历目录的代码如下所示:

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 TraverseDirectoryWithNio {
    public static void main(String[] args) throws IOException {
        Path dir = Paths.get("D:/test");
        try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
            for (Path file : stream) {
                if (Files.isDirectory(file)) {
                    System.out.println("Directory: " + file.getFileName());
                } else {
                    System.out.println("File: " + file.getFileName());
                }
            }
        }
    }
}

代码中,我们首先通过 Paths.get() 方法获取目录的 Path 对象,然后使用 Files.newDirectoryStream() 方法获取目录下面的所有文件和目录。遍历文件和目录时,通过 Files.isDirectory() 方法判断是不是目录,并打印出来。运行程序,输出如下:

Directory: dir1
Directory: dir2
File: file1.txt
File: file2.txt
使用Java IO遍历目录

在JDK 1.7以前,如果要遍历目录,可以使用Java IO包中的 File 类和 File.listFiles() 方法。其代码如下所示:

import java.io.File;

public class TraverseDirectoryWithIo {
    public static void main(String[] args) {
        File dir = new File("D:/test");
        File[] files = dir.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    System.out.println("Directory: " + file.getName());
                } else {
                    System.out.println("File: " + file.getName());
                }
            }
        }
    }
}

代码中,我们首先通过 File 对象获取目录,然后使用 File.listFiles() 方法获取目录下面的所有文件和目录。遍历文件和目录时,通过 File.isDirectory() 方法判断是不是目录,并打印出来。运行程序,输出如下:

Directory: dir1
Directory: dir2
File: file1.txt
File: file2.txt
总结

在Java编程中,我们经常需要遍历一个目录来查找、读取和处理其中的文件。本文介绍了如何使用Java NIO和Java IO包中的方法来遍历目录。Java NIO能够提供更加高效和灵活的遍历方式,而Java IO包中的遍历方式则容易理解和掌握。用户可以根据实际需要选择合适的遍历方案。