首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命异常:程序中的main在SD卡中搜索pdf文件

致命异常:程序中的main在SD卡中搜索pdf文件
EN

Stack Overflow用户
提问于 2012-02-15 23:07:21
回答 2查看 144关注 0票数 1

debug.java

代码语言:javascript
复制
 package com.himanshu;

    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;

    public class BookShelfDebugActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Log.i("debug","qwert111111");

            FileWalker fw=new FileWalker();
            fw.Walker("/");
            String a=fw.ListPDF[0].getName();
            String b=fw.ListPDF[1].getName();

            Log.i("debug",a);
                    Log.i("debug",b);



        }
    }

FileWalker.java

代码语言:javascript
复制
 package com.himanshu;

    import java.lang.String;
    import java.io.File;
    import android.app.ProgressDialog;
    import android.content.Context;


    public class FileWalker  {

        public File[] ListPDF;
        public int count = 0;
        public String Path;
        public Context context;

    public void Walker(String Path){
            File root = new File(Path);
            File [] List = root.listFiles();
            for(File f :List){
                if(f.isDirectory()){
                    Walker(f.getAbsolutePath());
                }
                else{
                    if(f.getName().endsWith(".pdf")){
                        ListPDF[count] = f;
                        count++;
                    }
                }
            }
        }
    }

错误

代码语言:javascript
复制
02-15 20:05:26.903: E/AndroidRuntime(1313): FATAL EXCEPTION: main
02-15 20:05:26.903: E/AndroidRuntime(1313): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.himanshu/com.himanshu.BookShelfDebugActivity}: java.lang.NullPointerException
02-15 20:05:26.903: E/AndroidRuntime(1313):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at android.os.Looper.loop(Looper.java:123)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at android.app.ActivityThread.main(ActivityThread.java:4627)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at java.lang.reflect.Method.invokeNative(Native Method)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at java.lang.reflect.Method.invoke(Method.java:521)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at dalvik.system.NativeStart.main(Native Method)
02-15 20:05:26.903: E/AndroidRuntime(1313): Caused by: java.lang.NullPointerException
02-15 20:05:26.903: E/AndroidRuntime(1313):     at com.himanshu.FileWalker.Walker(FileWalker.java:35)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at com.himanshu.FileWalker.Walker(FileWalker.java:37)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at com.himanshu.BookShelfDebugActivity.onCreate(BookShelfDebugActivity.java:16)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-15 20:05:26.903: E/AndroidRuntime(1313):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

我只是想找到SD卡里所有的pdf文件..但是程序不起作用。我将两个pdf文件从桌面复制到AVD的/data/mnt/sdcard,并尝试在logcat上打印它们的名称。请帮帮我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-15 23:13:03

好吧,有一件事突然浮现出来。您声明了一个数组,但从未分配一个数组,然后将项分配给该数组。

代码语言:javascript
复制
public File[] ListPDF;

...

ListPDF[count] = f;

每次都会崩溃得很厉害。因为这是一个无界的项目列表,所以ArrayList会工作得更好。

代码语言:javascript
复制
List<File> ListPDF = new ArrayList<File>();

...

ListPDF.add(f);
票数 3
EN

Stack Overflow用户

发布于 2012-02-15 23:15:58

使用:

代码语言:javascript
复制
File [] List = root.listFiles();
if(List!=null)
{
    for(File f :List)
    {
        /* your stuff */
    }
}

此外,请确保将权限android.permission.WRITE_EXTERNAL_STORAGE添加到清单文件中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9295812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档