杰瑞科技汇

Java如何读取文件夹下所有文件?

Java读取文件夹下的所有文件

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

Java如何读取文件夹下所有文件?-图1
(图片来源网络,侵删)

使用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();
        }
    }
}

注意事项

  1. 路径分隔符:在Windows上使用反斜杠\,在Unix/Linux上使用正斜杠,或者使用File.separator
  2. 权限问题:确保程序有权限访问目标文件夹。
  3. 异常处理:实际应用中应该妥善处理可能抛出的异常。
  4. 性能考虑:对于非常大的目录结构,考虑使用流式处理(如Java 8的Files.walk())以避免内存问题。

选择哪种方法取决于你的Java版本和具体需求,Java 8的Files.walk()方法通常是最简洁和功能最强大的选择。

Java如何读取文件夹下所有文件?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇