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();
}
}
}
以上两种方式均可以实现获取指定路径下的所有文件名,根据实际需要可以选择其中一种方式进行实现。
