黑马程序员技术交流社区
标题:
文件遍历疑问
[打印本页]
作者:
李万海
时间:
2013-3-28 09:22
标题:
文件遍历疑问
本帖最后由 李万海 于 2013-3-28 17:55 编辑
import java.io.*;
class FileListDemo
{
public static void main(String[] args)
{
listRootsDemo();
}
public static void listRootsDemo()
{
File[] files = File.listRoots();
for(int x=0; x<files.length; x++)
{
String[] names = files[x].list();//此处出现空指针异常
for(int y=0; y<names.length; y++)
{
System.out.println(names[y]);
}
}
}
}
复制代码
想用以上代码遍历各个盘符下面的文件及文件夹,但是编译之后在如上所标记处出现空指针异常,
为什么
File[]
中的元素不能调用
list()
方法输出其中的目录及文件呢?
作者:
赵喜平
时间:
2013-3-28 09:45
代码运行没有空指针异常,是不是哪里配置出问题了
作者:
董延京
时间:
2013-3-28 09:53
JDK中,关于File的list()方法的描述:返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
如果此抽象路径名不表示一个目录,那么此方法将返回 null。
否则返回一个字符串数组,每个数组元素对应目录中的每个文件或目录。表示目录本身及其父目录的名称不包括在结果中。每个字符串是一个文件名,而不是一条完整路径。
你可以逐个打印这些files[]的name或者绝对路径getAbsolutePath(),会发现 DVD驱动器(G:)也包含在内(我的是这个盘报的nullpoints)这个盘是不包含任何目录和文件的,就是它的list()方法返回了空值。
作者:
HM谢文辉
时间:
2013-3-28 12:35
import java.io.*;
class FileListDemo
{
public static void main(String[] args)
{
listRootsDemo();
}
public static void listRootsDemo()
{
File[] files = File.listRoots();
for(int x=0; x<files.length; x++)
{
String[] names = files[x].list();//如果files[x]为文件,返回null。
for(int y=0; y<names.length; y++)
{
System.out.println(names[y]);
}
}
}
}
复制代码
参见:老毕视频第20天第5集 05:51到07:10
作者:
tshch1989
时间:
2013-3-28 13:15
代码没有问题,我的猜测是,你的电脑上有”虚拟光驱“盘,建议不使用for 直接用files[0],files[1]这样挨个目录试一试,并结合输出names看看里边到底存储的是什么,希望对你有帮助;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2