写了个java程序,递归列出盘符下的文件,但是一直报空指针异常的错误,大家帮我看看哪出的错啊
packagefile;importjava.io.*;publicclassTest2{publicstaticvoidmain(Stringargs[]){Test2...
package file;
import java.io.*;
public class Test2 {
public static void main(String args[]){
Test2 t=new Test2();
t.getDirectoryName("D:\\");
}
public void getDirectoryName(String name){
File f=new File(name);
String str[]=null;
if(f.isDirectory()){
str=f.list();
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
getDirectoryName(name+"\\"+str[i]);
}
}else{
System.out.println(name);
}
}
} 展开
import java.io.*;
public class Test2 {
public static void main(String args[]){
Test2 t=new Test2();
t.getDirectoryName("D:\\");
}
public void getDirectoryName(String name){
File f=new File(name);
String str[]=null;
if(f.isDirectory()){
str=f.list();
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
getDirectoryName(name+"\\"+str[i]);
}
}else{
System.out.println(name);
}
}
} 展开
展开全部
list()方法可能返回null,如果你某个目录中为空,没有子目录,没有其他文件,就返回空,则会出现nullPointerException,
而这些出现异常时的文件,都是系统中不存在的(不是隐藏的文件,也不是系统保护的文件。)
个人认为,这些文件是跟回收站有关的,往往这种文件都是禁止外界访问的,导致File指向null对象,就抛出空指针异常。所以加个if判断是否为null.比如
public void showSubFile(File f)
{
File[] fs = f.listFiles();
if(fs != null) //看这里,看这里,看这里
for(int i=0;i<fs.length;i++)
{
File temp = fs[i];
if(temp.isFile())
{
System.out.println(temp.getName());
}
else
{
showSubFile(temp);
}
}
}
这样不会出现问题
而这些出现异常时的文件,都是系统中不存在的(不是隐藏的文件,也不是系统保护的文件。)
个人认为,这些文件是跟回收站有关的,往往这种文件都是禁止外界访问的,导致File指向null对象,就抛出空指针异常。所以加个if判断是否为null.比如
public void showSubFile(File f)
{
File[] fs = f.listFiles();
if(fs != null) //看这里,看这里,看这里
for(int i=0;i<fs.length;i++)
{
File temp = fs[i];
if(temp.isFile())
{
System.out.println(temp.getName());
}
else
{
showSubFile(temp);
}
}
}
这样不会出现问题
展开全部
import java.io.File;
public class t4 {
public static void main(String[] args) {
t4 a = new t4();
a.showSubFile(new File("f:/"));
}
public void showSubFile(File f)
{
File[] fs = f.listFiles();
for(int i=0;i<fs.length;i++)
{
File temp = fs[i];
if(temp.isFile())
{
System.out.println(temp.getName());
}
else
{
showSubFile(temp);
}
}
}
}
public class t4 {
public static void main(String[] args) {
t4 a = new t4();
a.showSubFile(new File("f:/"));
}
public void showSubFile(File f)
{
File[] fs = f.listFiles();
for(int i=0;i<fs.length;i++)
{
File temp = fs[i];
if(temp.isFile())
{
System.out.println(temp.getName());
}
else
{
showSubFile(temp);
}
}
}
}
追问
这个也报空指针异常的错误:
desktop.ini
Exception in thread "main" java.lang.NullPointerException
at file.Test2.showSubFile(Test2.java:14)
at file.Test2.showSubFile(Test2.java:23)
at file.Test2.showSubFile(Test2.java:23)
at file.Test2.main(Test2.java:8)
怎么回事呀
追答
你文件没有读权限吧,我这个在xp下没问题,是不是你没给java开权限
还有你第一个指定的目录存在吗a.showSubFile(new File("f:/"));
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询