gif*_*pif 5 java file drive nullpointerexception
我写了一个程序来查找文件或目录.
它正常工作时,我试图在搜索文件与 目录
例如
java FileSearch abc.txt f:\xyz
但是当我尝试搜索文件从本地驱动器比程序抛出异常
java FileSearch abc.txt f:\
后,显示所有的搜索结果将引发NullPointerException异常.
代码是:
import java.io.*;
class FileSearch{
static String fd;
static boolean flg=true;
public static void main(String arr[]){
fd=arr[0];
String path=arr[1];
String dir[]=new File(path).list();
new FileSearch().finder(dir,path);
if(flg){System.out.print("File not found.");}
}
public void finder(String[] dir,String path){
for(int i=0;i<dir.length;i++){
if(dir[i].equals(fd)){
System.out.println(path+"\\"+fd);
flg=false;
}
if(new File(path,dir[i]).isDirectory())
finder(new File(path,dir[i]).list(),path+"\\"+dir[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么抛出这个异常以及如何解决它.
JNL*_*JNL 10
文档
listFiles()提到null如果此抽象路径名不表示目录,或者发生I/O错误,它将返回.此外,您需要检查file.canRead()应用程序是否可以读取目录.
恕我直言
总是以这种方式使用它;
String[] files = file.list();
if (files!=null) {
for (String f : files) processFile(f);
}
Run Code Online (Sandbox Code Playgroud)
推荐这个;
File directory = new File(directoryName);
//get all the files from a directory
File[] fList = directory.listFiles();
if(fList != null){
for (File file : fList){
if (file.isFile()){
System.out.println(file.getName());
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您有任何疑问,请告诉我.