我的程序为什么会错?

TopCat 2003-02-27 03:45:44
小弟初学Java,写了一个小程序,但是运行时有异常。
--------------------
import java.io.*;

public class FileScaner{
public static void DirScan(final String path){
String p = new String(path);
File f = new File(path);

String[] fileList;
fileList = f.list();
for(int i = 0; i < fileList.length; i++){
if (f.isDirectory() && (f.getName() != ".") && (f.getName() != "..")){
DirScan(path+f.getName());
}else{
System.out.println(f.getAbsolutePath());
}
}
}

public static void main(String[] args){
DirScan(args[0]);
}
}
-----------------------
运行时出现:
G:\TEMP>java FileScaner d:\downloads
Exception in thread "main" java.lang.NullPointerException
at FileScaner.DirScan(FileScaner.java:10)
at FileScaner.DirScan(FileScaner.java:12)
at FileScaner.main(FileScaner.java:20)

我想知道我错在哪里?

另外,我想问一下,有没有比较小的、好用的、图形界面的Java Debugger?不想装JBuilder这样的大家伙,但Jdb确实用起来有点难度。
...全文
57 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyicecream 2003-02-27
  • 打赏
  • 举报
回复
大概如此,保留点个人风格,只要看的舒服就行了。
wangxi13720 2003-02-27
  • 打赏
  • 举报
回复
推荐freejava3.0 + j2sdk1.4.1
colors 2003-02-27
  • 打赏
  • 举报
回复
forte or JCreteor
TopCat 2003-02-27
  • 打赏
  • 举报
回复
多谢各位解答。刚刚查了JDK文档,原来是自己对File的方法不熟悉,全都用错了,惭愧啊惭愧 :)

刚刚学Java,很多东西都还不熟悉,希望能够得到大家的帮助,谢谢!

我改了代码之后能够运行了,其实很简单,就是递归搜索特定文件夹下的所有文件,包括子文件夹(想起了几年前初学编程时的日子,呵呵)。方法名也改成了首单词小写,不知道还有什么不符合规范的,希望大家指出。

另外,再想问一句,有什么比较好用的图形界面的小的Java调试工具可以用?现在的调试确实比较烦啊!
---------------------------
import java.io.*;

public class FileScaner{
public static void dirScan(final String path, int level){
File f = new File(path);

String[] fileList;
fileList = f.list();
if(fileList==null){
System.out.println("Maybe error occured or file/directory not found.");
return;
}

for(int i = 0; i < fileList.length; i++){
for(int j = 0; j < level; j++){
System.out.print("");
}
System.out.print("|");
System.out.println(fileList[i]);

File f2 = new File(path + "\\" + fileList[i]);
if (f2.isDirectory()){
dirScan(path + "\\" + fileList[i], level+1);
}
}
}

public static void main(String[] args){
dirScan(args[0], 0);
}
}
----------
帖子先保留一阵子,希望能得到答案。明天结帖
hydrus 2003-02-27
  • 打赏
  • 举报
回复
不用JBuilder就试一试 sun forte
bsd 2003-02-27
  • 打赏
  • 举报
回复
像baitianhai(hong) 所说
在for前加两句
if(fileList==null){
System.out.println("Maybe error occured or file/directory not found.");
return;
}
Jacky1206 2003-02-27
  • 打赏
  • 举报
回复
fileList = f.list();
f.list()有可能取不到,所以fileList就有可能是null
这样,当fileList.length的时候,由于fileList是null,对null进行.length操作,就会抛出空指针异常的错误,所以建议第一位大虾的修改意见。
jcq 2003-02-27
  • 打赏
  • 举报
回复
你把定义(final String path) 改成 (String path)一试。
bluesmile979 2003-02-27
  • 打赏
  • 举报
回复
你运行时给参数了么?方法名第一个字母要小写,差点被搞晕了。
baitianhai 2003-02-27
  • 打赏
  • 举报
回复
for(int i = 0; i < fileList.length; i++){
前面加上一句
if(fileList!=null)

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧