gpt4 book ai didi

java - java中递归获取文件和目录列表

转载 作者:行者123 更新时间:2023-11-30 08:13:07 26 4
gpt4 key购买 nike

我想获取所有文件和目录列表,这是我的代码:

package com.loiane.util;
import java.io.File;
import java.io.FileFilter;
import java.nio.file.*;
import java.util.ArrayList;
public class ListFilesUtil {
public static void getList(String dir){
File folder = new File(dir);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
System.out.println(listOfFiles[i].getName());
} else if (listOfFiles[i].isDirectory()) {
System.out.println(listOfFiles[i].getAbsolutePath());
File folder1 = new File(dir);
File[] listOfFiles1 = folder.listFiles();
if(listOfFiles1.length>0)
ListFilesUtil.getList(listOfFiles1[i].getPath());
}
}
}
public static void main(String[] args) {
File dir = new File("C:\\");
String d="C:\\";
ListFilesUtil.getList(d);
}
}

但是当我运行它时,它只工作两个项目,而对于其余的目录和文件,给我这个错误:

 Exception in thread "main" java.lang.NullPointerException
at com.loiane.util.ListFilesUtil.getList(ListFilesUtil.java:10)
at com.loiane.util.ListFilesUtil.getList(ListFilesUtil.java:18)
at com.loiane.util.ListFilesUtil.getList(ListFilesUtil.java:18)
at com.loiane.util.ListFilesUtil.main(ListFilesUtil.java:25)

我该如何修复它?请帮忙,谢谢。

最佳答案

您需要在这里进行一些防御性编码。因为 folder.listFiles() 也可以返回 null 。这是工作代码:

 public static void getList(String dir) {
File folder = new File(dir);
File[] listOfFiles = folder.listFiles();
if (listOfFiles != null) {

for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
System.out.println(listOfFiles[i].getName());
} else if (listOfFiles[i].isDirectory()) {
System.out.println(listOfFiles[i].getAbsolutePath());
File[] listOfFiles1 = folder.listFiles();
if (listOfFiles1 != null) {
for (int j = 0; j < listOfFiles1.length; j++) {
ListFilesUtil.getList(listOfFiles1[j].getPath());
}
}
}
}
}
}

关于java - java中递归获取文件和目录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30073650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com