我的程序为什么会错?

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确实用起来有点难度。
...全文
23 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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)
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
社区管理员
  • Java SE
申请成为版主
帖子事件
创建了帖子
2003-02-27 03:45
社区公告
暂无公告