[英]recursively get files and directories list in java
我想要獲取所有文件和目錄列表,這是我的代碼:
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());
}
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.