新手遇到的流和文件的问题,望指教!
import java.io.*;
public class FindDiretories{
public static void main(String[] args){
if (args.length==0)
args=new String[]{ "D:\\PP "};
try{
File pathName=new File(args[0]);
String[] fileNames=pathName.list();
for(int i=0;i <fileNames.length;i++)
{
File f=new File(pathName.getPath(),fileNames[i]);
if(f.isDirectory())
{
System.out.println(f.getCanonicalPath());
main(new String[]{f.getPath()});
}
}
}
catch(
IOException e)
{
e.printStackTrace();
}
}
}
上面是我的源程序,作用是显示出给定路径中的目录及子目录。
现在的问题是上面的args=new String[]{ "D:\\PP "};这一句,能显示正确所有的文件夹,D:\\PP文件夹下所有的目录。如果改为args=new String[]{ "D: "};也能显示所有的目录,但是最后报错,
Exception in thread "main " java.lang.NullpointerException
at Finddirectories.main(Finddirectories.java:9)
at Finddirectories.main(Finddirectories.java:15)
这是什么原因,D:下的文件夹和D:\\PP下面的文件夹有什么不同吗?
------解决方案--------------------D:/
------解决方案--------------------文件名错误,不存在D:这样的路径
正确的写法为
D:\\
如果指定的路径不存在,则String[] fileNames=pathName.list();这里 fileNames=null
因此在接下来的地方会报
空指针错误
------解决方案--------------------路径有问题
------解决方案--------------------路径必须是D:\\....\\....\\这样的 两个斜线不能少
------解决方案--------------------其实很简单:
将 "D:" 改为 "D:\\"