黑马程序员技术交流社区
标题:
问个复制文件的问题。
[打印本页]
作者:
闾丘日月
时间:
2012-5-25 20:09
标题:
问个复制文件的问题。
<P>public static void main(String[] args){
Test.extractFiles("d:\\");
}
private final static List<String> files = null;
private static void extractFiles(String dirName){
File[] files = new File(dirName).listFiles();
for(File file : files){
if(file.isDirectory()){
extractFiles(file.getName());
}else if(file.getName().endsWith(".java")){
Test.files.add(file.getName());
}
}
}
}
</P>
复制代码
这段代码我一运行就是空指针异常,但是我不会调。debug就是在for file那句断掉。
求指点!
作者:
张亭
时间:
2012-5-25 22:37
本帖最后由 张亭 于 2012-5-25 22:51 编辑
楼主,
05.private final static List<String> files = null;
这里的files 定义为final 且指向空
12. Test.files.add(file.getName());
这句肯定会报错咯
应该在上面new上一个对象
for (File file : files) 前面要加上一个判断 if(files!=null)
因为当dirName不是文件夹时,File[] files = new File(dirName).listFiles();返回空
就导致下面的空指针异常了
作者:
张晨
时间:
2012-5-25 23:31
本帖最后由 张晨 于 2012-5-25 23:38 编辑
第一:List没有初始化、、、、、、
第二:递归的那条语句路径不对 extractFiles(file.getName()); 应该改为 extractFiles(dirName+"\\"+file.getName());或者extractFiles(file.getAbsolutePath())
package com.test;
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) {
new Test().extractFiles("D:\\Android\\");
for(Iterator it = filesList.iterator();it.hasNext();)
System.out.println(it.next());
}
private static List<String> filesList = new ArrayList<String>();
private void extractFiles(String dirName) {
File[] files = new File(dirName).listFiles();
for (File file : files) {
if (file.isDirectory()) {
extractFiles(file.getAbsolutePath());
} else if (file.getName().endsWith(".java")) {
Test.filesList.add(file.getName());
}
}
}
}
复制代码
作者:
龚龙
时间:
2012-5-26 00:02
说说final 的问题吧,被final修饰的变量,其引用是不可改变的,其引用的对象可以改变.
private final static List<String> files = null ;
这里的files引用指向null了,下面你再写 files = new ArrayList<String>(); 编译器都不会通过!
作者:
闾丘日月
时间:
2012-5-26 00:27
谢谢大家了,脑子一时秀逗了。。
作者:
黑马11期李项京
时间:
2012-5-26 00:37
龚龙 发表于 2012-5-26 00:02
说说final 的问题吧,被final修饰的变量,其引用是不可改变的,其引用的对象可以改变.
private final static L ...
补充一下,而且05行和07行的files都不是同一个,05行是一个集合,07是一个数组,没必要定义05行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2