要读取Java程序中某个目录下的所有子目录和文件路径,可以使用以下步骤:
- 根据给定目录路径创建一个Java File实例:
File root = new File("dir/path");
- 使用Java IO API的File类中listFiles()方法获取指定目录下所有文件和子目录的File对象数组:
File[] files = root.listFiles();
- 递归遍历数组,对于每个元素,如果这是一个目录,那么就再次调用he getFilePath方法,进一步遍历这个目录。如果这是一个文件,则将其路径保存在ArrayList中。
public static void getFilePath(File[] files, ArrayList<String> fileList) {
for (File file : files) {
if (file.isDirectory()) {
getFilePath(file.listFiles(), fileList);
} else {
fileList.add(file.getAbsolutePath());
}
}
}
在上述代码中,我们首先判断当前的文件是否为目录,如果是的话则递归调用自己处理其下一级目录;否则,将其路径添加到列表中。
下面是一个完整的示例,它可以打印出指定目录(/home/user/dir)下所有文件和子目录的路径:
import java.io.File;
import java.util.ArrayList;
public class ListFiles {
public static void main(String[] args) {
File root = new File("/home/user/dir");
ArrayList<String> fileList = new ArrayList<String>();
getFilePath(root.listFiles(), fileList);
// 打印文件和目录路径列表
for (String path : fileList) {
System.out.println(path);
}
}
public static void getFilePath(File[] files, ArrayList<String> fileList) {
for (File file : files) {
if (file.isDirectory()) {
getFilePath(file.listFiles(), fileList);
} else {
fileList.add(file.getAbsolutePath());
}
}
}
}
输出结果如下:
/home/user/dir/file1.txt
/home/user/dir/file2.txt
/home/user/dir/subdir1
/home/user/dir/subdir2/file3.txt
/home/user/dir/subdir3/file4.txt
另外一个示例是,对于特定的文件类型(例如,仅列出.jpg和.png文件),我们可以在遍历时添加条件判断:
import java.io.File;
import java.util.ArrayList;
public class ListSelectedFiles {
public static void main(String[] args) {
File root = new File("/home/user/pics");
ArrayList<String> fileList = new ArrayList<String>();
getFilePath(root.listFiles(), fileList);
// 打印文件和目录路径列表
for (String path : fileList) {
System.out.println(path);
}
}
public static void getFilePath(File[] files, ArrayList<String> fileList) {
for (File file : files) {
if (file.isDirectory()) {
getFilePath(file.listFiles(), fileList);
} else {
String fileName = file.getName();
if (fileName.endsWith(".jpg") || fileName.endsWith(".png")){
fileList.add(file.getAbsolutePath());
}
}
}
}
}
输出结果是,仅列出.jpg和.png文件的路径:
/home/user/pics/pic1.jpg
/home/user/pics/pic2.jpg
/home/user/pics/pic3.png
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java读取其下所有文件夹与文件路径的方法 - Python技术站