Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java File.Listfile()强制关闭(NullPointerException)_Java_Android_File_Nullpointerexception - Fatal编程技术网

Java File.Listfile()强制关闭(NullPointerException)

Java File.Listfile()强制关闭(NullPointerException),java,android,file,nullpointerexception,Java,Android,File,Nullpointerexception,我有一个奇怪的问题,第一次启动应用程序时,它工作正常,第二次崩溃,第三次工作正常,第四次崩溃等等。。 以下是日志: E/AndroidRuntime(18039): FATAL EXCEPTION: main E/AndroidRuntime(18039): java.lang.RuntimeException: Unable to start activity Co mponentInfo{omar.quran1/omar.quran1.Quran}: java.lang.NullPointe

我有一个奇怪的问题,第一次启动应用程序时,它工作正常,第二次崩溃,第三次工作正常,第四次崩溃等等。。 以下是日志:

E/AndroidRuntime(18039): FATAL EXCEPTION: main
E/AndroidRuntime(18039): java.lang.RuntimeException: Unable to start activity Co
mponentInfo{omar.quran1/omar.quran1.Quran}: java.lang.NullPointerException
E/AndroidRuntime(18039):        at android.app.ActivityThread.performLaunchActiv
ity(ActivityThread.java:1768)
E/AndroidRuntime(18039):        at android.app.ActivityThread.handleLaunchActivi
ty(ActivityThread.java:1784)
E/AndroidRuntime(18039):        at android.app.ActivityThread.access$1500(Activi
tyThread.java:123)
E/AndroidRuntime(18039):        at android.app.ActivityThread$H.handleMessage(Ac
tivityThread.java:939)
E/AndroidRuntime(18039):        at android.os.Handler.dispatchMessage(Handler.ja
va:99)
E/AndroidRuntime(18039):        at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(18039):        at android.app.ActivityThread.main(ActivityThrea
d.java:3835)
E/AndroidRuntime(18039):        at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime(18039):        at java.lang.reflect.Method.invoke(Method.java:5
07)
E/AndroidRuntime(18039):        at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:847)
E/AndroidRuntime(18039):        at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:605)
E/AndroidRuntime(18039):        at dalvik.system.NativeStart.main(Native Method)

E/AndroidRuntime(18039): Caused by: java.lang.NullPointerException
E/AndroidRuntime(18039):        at omar.quran1.Quran.getReaders(Quran.java:565)
E/AndroidRuntime(18039):        at omar.quran1.Quran.onCreate(Quran.java:414)
E/AndroidRuntime(18039):        at android.app.Instrumentation.callActivityOnCre
ate(Instrumentation.java:1047)
E/AndroidRuntime(18039):        at android.app.ActivityThread.performLaunchActiv
ity(ActivityThread.java:1722)
E/AndroidRuntime(18039):        ... 11 more
因此,当代码到达getReaders时,它会崩溃,并且正好在这一行

    int lengthtmp=f.listFiles().length;
以下是函数:

public void getReaders()
    {
        File f = new File(SuraDatabase.Audio_PATH);
        if(f!=null)
        {
        int lengthtmp=f.listFiles().length;  //It crashes here - NullPointerException
        if(lengthtmp==0||lengthtmp>10)
        {
            SoundFiles=false;
        }
        else
        {
            SoundFiles=true;
            File[] readArrays=f.listFiles();
            for(int i =0;i<lengthtmp;i++)
            {
                if(readArrays[i].isDirectory())
                {
                    ReaderOptions.add(readArrays[i].getName());
                }
            }
        }
        }
    }
有人能告诉我为什么那行返回空值吗?
谢谢。

首先,因为您要检查f是否为null,所以请检查f是否存在。因为如果它不存在,那么它就无法列出任何内容,因此它将为空,这将导致您的异常。 这并不完全是对你问题的回答,但是试试看,看看会发生什么,然后发布你的结果,这样我们可以给你一个更好的答案


我还猜测您在第一次运行后不知何故删除了此目录,但这只是一个猜测,没有看到实际代码。

您可以尝试将变量f更改为更具描述性的内容。我遇到android忽略了一个1个字符的变量。

在某些情况下可能返回null。请尝试检查它是否为目录文件.isDirectory,以及返回值是否为null