Исключение java.lang.NullPointerException - PullRequest
0 голосов
/ 19 декабря 2011

Я работаю в настольном приложении для Windows версии, используя Java.В моем приложении есть требование для поиска всех .php

я использую рекурсивные методы;

и REGEX

мой код:

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)

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

src.list() возвращает ноль. Вероятно, это происходит потому, что у вас (текущего пользователя) нет прав доступа к каталогу. Я предполагаю, что это около C:\ (корневой каталог диска C). Это часто происходит особенно в Windows 7.

Сначала попробуйте отладить ваш код, используя каталог, в котором у вас есть права доступа. Затем исправьте свой код, чтобы заботиться о пустых значениях. Затем попробуйте запустить программу от имени администратора.

1 голос
/ 19 декабря 2011

Измените основной, как показано ниже, для целей отладки.

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

И добавить нулевую отметку в

if (src != null && src.exists() && src.isDirectory())

Edit:

Ниже у меня работает нормально (я использую windows 7).

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();
        }
    }
}
...