欢迎访问宙启技术站
智能推送

Java函数:如何取得指定路径下的所有文件名?

发布时间:2023-06-09 23:08:42

在Java程序中,如何获取指定路径下的所有文件名是一个基本问题,本篇文章会介绍两种实现方式。

第一种方式:使用java.io.File类实现

1. 首先,需要使用java.io.File类的list()方法获取指定路径下的所有文件名,该方法返回一个字符串数组。

2. 要获取指定路径下所有子目录中的文件名,可以使用File类的listFiles()方法获取指定路径下的所有子文件以及目录,然后递归遍历子目录,再调用list()方法获取子目录中的文件名。

3. 在获取文件名前,可以使用File类的isFile()方法判断该文件是否为普通文件, isDirectory()方法判断该路径是否为目录。

示例代码:

import java.io.File;

public class GetAllFileNames {
    public static void main(String[] args) {
        String path = "D:\\test"; // 指定路径
        File f = new File(path);
        File[] fileList = f.listFiles(); //获取指定路径下的所有文件和目录
        for (File file : fileList) {
            if (file.isFile()) { // 判断是否为文件
                System.out.println(file.getName()); // 获取文件名
            } else if (file.isDirectory()) { // 判断是否为目录
                getAllFileNames(file.getAbsolutePath());
            }
        }
    }

    private static void getAllFileNames(String path) {
        File f = new File(path);
        File[] fileList = f.listFiles(); //获取指定路径下所有文件和目录
        for (File file : fileList) {
            if (file.isFile()) { // 判断是否为文件,是则获取文件名
                System.out.println(file.getName()); // 获取文件名
            } else if (file.isDirectory()) { // 判断是否为目录,是则递归遍历子目录
                getAllFileNames(file.getAbsolutePath());
            }
        }
    }
}

第二种方式:使用Java 8的Streams实现

Java 8中新增了Streams API,可以使用该API非常便捷地获取指定路径下的所有文件名。

示例代码:

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 GetAllFileNames {
    public static void main(String[] args) {
        String path = "D:\\test"; // 指定路径
        try {
            Stream<Path> stream = Files.walk(Paths.get(path)); // 获取指定路径下的所有路径
            stream.filter(p -> p.toFile().isFile()).forEach(p -> System.out.println(p.getFileName())); // 过滤出所有文件,并打印文件名
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上两种方式均可以实现获取指定路径下的所有文件名,根据实际需要可以选择其中一种方式进行实现。