黑马程序员技术交流社区
标题: 遍历带内容的文件夹的疑问 [打印本页]
作者: 廖理 时间: 2012-5-9 10:51
标题: 遍历带内容的文件夹的疑问
在遍历文件夹时 ,没有问题,为什么要换成遍历c盘,D盘,E盘,F盘的时候,为什么会报空指针异常(NullPointException)
问题出在哪里
在毕老师的视频中的遍历一个带目录的文件夹的程序是这样的
import java.io.*;
class FileDemo1{
publicstatic void main(String[] args)throws IOException{
method_8(newFile("F:"));
}
//读取一个带内容的文件夹
publicstatic void method_8(File d){
sop(d);
File[]files = d.listFiles()
for(inti = 0; i < files.length ;i++){
if(files.isDirectory()){
method_8(files);
}else{
sop(files);
}
}
}
在遍历文件夹时 ,没有问题,为什么要换成遍历c盘,D盘,E盘,F盘的时候,为什么会报空指针异常(NullPointException)
问题出在哪里
作者: 赵玮_Tom 时间: 2012-5-9 10:53
在盘符后面加上两个反斜杠试试
作者: —__ 时间: 2012-5-9 11:00
请讲你换成其他盘符 并报错的代码弄上来看看
作者: 彩虹 时间: 2012-5-9 11:36
我将一段类似的程序调试了一下,报空指针异常问题出现在method_8(newFile("F:"));这一句
你看看是否是("F:")这部分写错,必须全部为英文写的,包括符号在内。
作者: 徐然 时间: 2012-5-9 13:02
method_8(newFile("F:"));
F: 表示一个普通的字符串,好像不能代表盘符把,"F:\\"这个是盘符
作者: 廖理 时间: 2012-5-9 13:26
本帖最后由 廖理 于 2012-5-9 13:29 编辑
操 弄了 半天,我终于知道错在哪里了哈哈 终于明白了
这回没问题了 哈哈
import java.io.*;
class FileDemo1{
public static void main(String[] args)throws IOException{
method_8(new File("F:\\");
}
//读取一个带内容的文件夹
public static void method_8(File d){
sop(d);
File[] files = d.listFiles();
if(files != null){//此处一定要判断是否为空,否则,会抛出NullPointException
for(int i = 0; i < files.length ;i++){
if(files.isDirectory()){
method_8(files);
}else{
sop(files);
}
}
}
如果文件夹为空时,File[] files = d.listFiles();此时files为空,所以在循环前必须判断此数组是否为空, 不判断的话,就可能会会抛出NullPointException
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |