日期:2014-05-20  浏览次数:20734 次

新手遇到的流和文件的问题,望指教!
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:\\"