异常java.lang.NullPointerException

异常java.lang.NullPointerException,java,file,exception,io,nullpointerexception,Java,File,Exception,Io,Nullpointerexception,Iam使用java在windows版本的桌面应用程序中工作。在我的应用程序中,需要搜索all.php 我使用递归方法 和正则表达式 我的代码: import java.io.File; public class Copier { public static void find(String source,String rep) { File src=new File(rep); if(src.exists() && src.isDirectory())

Iam使用java在windows版本的桌面应用程序中工作。在我的应用程序中,需要搜索all.php

我使用递归方法

和正则表达式

我的代码:

import java.io.File;


public class Copier {
public static void find(String source,String rep)
{
    File src=new File(rep);
    if(src.exists() && src.isDirectory())
    {
        String[] tab=src.list();
        for(String s:tab)
        {
            File srcc=new File(rep+"\\"+s);
            if(srcc.isFile())
            {  
                if(srcc.getName().matches(".*"+source+"$"))
                System.out.println(s);
            }

            else
                find(source,srcc.getAbsolutePath());
        }
    }
}

public static void main(String[] args)
{
    find(".php","C:\\");
}
}
但我有一个例外:

Exception in thread "main" java.lang.NullPointerException
    at Copier.find(Copier.java:11)
    at Copier.find(Copier.java:21)
    at Copier.main(Copier.java:28)

更改main,如下所示,以进行调试

public static void main(String[] args)
{
    try {
        find(".php","C:\\");
    } catch (Exception e) {
        e.printStackTrace();
    }
}
并添加一个空签入

if (src != null && src.exists() && src.isDirectory())
编辑:

下面对我来说很好,(我使用的是Windows7)

src.list()
返回null。这可能是因为您(当前用户)没有目录的访问权限。我猜是关于
C:\
(磁盘C的根目录)。这通常发生在Windows7上


首先尝试使用您有访问权限的目录调试代码。然后修复代码以关心空值。然后尝试以管理员身份运行您的程序

我猜,
src.list()
返回了一个null,但我只是在猜测行数。这可能会发生,例如,因为您未被授权访问该目录。是的,但我访问了一个AdministratorWell,如果该行是错误的来源,那么您将由于某种原因收到一个文件错误。尝试使用
canRead
测试位置。我尝试了,但是我在Copier.find(Copier.java:11)在Copier.find(Copier.java:21)在Copier.main(Copier.java:29)@anuar代码在“c:\\Work\\”中运行良好。只有在尝试“c:\”时,我才会得到相同的异常。正如Alex建议的那样,尝试检查管理员权限。我以管理员身份运行我的应用程序,但我有以下apph2.php creditbatch.php details.php:`
import java.io.File;

public class Copier {

    public static void find(String source,String rep) {
        File src = new File(rep);
        if (src!= null && src.exists() && src.isDirectory()) {
            String[] tab = src.list();
            if (tab != null) {
                for(String s : tab) {
                    File srcc = new File(rep+"\\"+s);
                    if (srcc.isFile()) {  
                        if (srcc.getName().matches(".*"+source+"$")) {
                            System.out.println(s);
                        }
                    } else {
                        find(source,srcc.getAbsolutePath());
                    }
                }
            } else {
                //System.out.println(" list is null");
            }
        }
    }

    public static void main(String[] args) {
        try {
            find(".java", "C:\\");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}