Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 将文件粘贴到根目录时出错_Java_Android_Nullpointerexception - Fatal编程技术网

Java 将文件粘贴到根目录时出错

Java 将文件粘贴到根目录时出错,java,android,nullpointerexception,Java,Android,Nullpointerexception,我有一个pasteFile类,它只是将文件粘贴到某个目录。但当我将文件粘贴到根目录时,文件会被粘贴,但由于NullPointerException,应用程序将关闭。下面是我为该类编写的代码: @Override protected List<String> doInBackground(String... content) { final List<String> failed = new ArrayList<String>(); final

我有一个pasteFile类,它只是将文件粘贴到某个目录。但当我将文件粘贴到根目录时,文件会被粘贴,但由于NullPointerException,应用程序将关闭。下面是我为该类编写的代码:

@Override
protected List<String> doInBackground(String... content) {
    final List<String> failed = new ArrayList<String>();
    final Activity activity = this.activity.get();

    for (String target : content) {
        if (ClipBoard.isMove()) {
            SimpleUtils.moveToDirectory(activity, target, location);
            success = true;
        } else {
            SimpleUtils.copyToDirectory(target, location);
            success = true;
        }
    }

    SimpleUtils.requestMediaScanner(activity,
            new File(location).listFiles());
    return failed;
}
知道我做错了什么吗

编辑:添加了logcat

    Process: com.tproductions.Openit, PID: 25526
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:300)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
            at java.util.concurrent.FutureTask.run(FutureTask.java:242)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:841)
     Caused by: java.lang.NullPointerException
            at com.tproductions.Openit.utils.SimpleUtils.requestMediaScanner(SimpleUtils.java:33)
            at com.tproductions.Openit.tasks.PasteTask.doInBackground(PasteTask.java:78)
            at com.tproductions.Openit.tasks.PasteTask.doInBackground(PasteTask.java:22)
            at android.os.AsyncTask$2.call(AsyncTask.java:288)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:841)
01-30 16:57:11.158  25526-25526/com.tproductions.Openit E/WindowManager﹕ android.view.WindowLeaked: Activity com.tproductions.Openit.Browser has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42ee8950 V.E..... R......D 0,0-684,192} that was originally added here
            at android.view.ViewRootImpl.<init>(ViewRootImpl.java:350)
            at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
            at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
            at android.app.Dialog.show(Dialog.java:294)
            at com.tproductions.Openit.tasks.PasteTask.onPreExecute(PasteTask.java:58)
            at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
            at android.os.AsyncTask.execute(AsyncTask.java:535)
            at com.tproductions.Openit.tasks.PasteTaskExecutor.next(PasteTaskExecutor.java:107)
            at com.tproductions.Openit.tasks.PasteTaskExecutor.start(PasteTaskExecutor.java:57)
            at com.tproductions.Openit.Browser.onOptionsItemSelected(Browser.java:498)
            at android.app.Activity.onMenuItemSelected(Activity.java:2600)
            at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1019)
            at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:741)
            at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
            at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:884)
            at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
            at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:546)
            at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:119)
            at android.view.View.performClick(View.java:4569)
            at android.view.View$PerformClick.run(View.java:18553)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:212)
            at android.app.ActivityThread.main(ActivityThread.java:5135)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
            at dalvik.system.NativeStart.main(Native Method)
Process:com.tproductions.Openit,PID:25526
java.lang.RuntimeException:执行doInBackground()时出错
在android.os.AsyncTask$3.done(AsyncTask.java:300)
位于java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
位于java.util.concurrent.FutureTask.setException(FutureTask.java:222)
位于java.util.concurrent.FutureTask.run(FutureTask.java:242)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
运行(Thread.java:841)
原因:java.lang.NullPointerException
位于com.tproductions.Openit.utils.SimpleUtils.requestMediaScanner(SimpleUtils.java:33)
位于com.tproductions.Openit.tasks.PasteTask.doInBackground(PasteTask.java:78)
位于com.tproductions.Openit.tasks.PasteTask.doInBackground(PasteTask.java:22)
在android.os.AsyncTask$2.call(AsyncTask.java:288)
位于java.util.concurrent.FutureTask.run(FutureTask.java:237)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
运行(Thread.java:841)
01-30 16:57:11.158 25526-25526/com.tproductions.Openit E/WindowManager﹕ android.view.WindowLeaked:Activity com.tproductions.Openit.Browser泄漏了最初添加到此处的window com.android.internal.policy.impl.PhoneWindow$DecorView{42ee8950 V.E…..R…D 0,0-684192}
在android.view.ViewRootImpl。(ViewRootImpl.java:350)
在android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)中
在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
在android.app.Dialog.show上(Dialog.java:294)
位于com.tproductions.Openit.tasks.PasteTask.onPreExecute(PasteTask.java:58)
位于android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
在android.os.AsyncTask.execute(AsyncTask.java:535)
在com.tproductions.Openit.tasks.PasteTaskExecutor.next(PasteTaskExecutor.java:107)
位于com.tproductions.Openit.tasks.PasteTaskExecutor.start(PasteTaskExecutor.java:57)
在com.tproductions.Openit.Browser.onOptionsItemSelected上(Browser.java:498)
在android.app.Activity.onMenuItemSelected上(Activity.java:2600)
在com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected上(PhoneWindow.java:1019)
位于com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:741)
在com.android.internal.view.menu.menuitemmpl.invoke(menuitemmpl.java:152)上
位于com.android.internal.view.menu.MenuBuilder.performitemation(MenuBuilder.java:884)
位于com.android.internal.view.menu.MenuBuilder.performitemation(MenuBuilder.java:874)
在com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:546)上
点击com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:119)
在android.view.view.performClick(view.java:4569)上
在android.view.view$PerformClick.run(view.java:18553)
位于android.os.Handler.handleCallback(Handler.java:733)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:212)
位于android.app.ActivityThread.main(ActivityThread.java:5135)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:877)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
在dalvik.system.NativeStart.main(本机方法)

我将scanner方法放在if语句中,现在它没有给出任何错误。问题是,由于根文件夹中的一些奇怪之处,变量
文件
有时为空。但现在,它工作正常。以下是工作代码片段:

public static void requestMediaScanner(final Context context,
                                       final File... files) {
    if(files!=null){
        String[] paths = new String[files.length];
        int i = 0;
        for (final File file : files) {
        paths[i] = file.getPath();
        Log.e("tag", paths[i]);
        i++;
    }
    MediaScannerConnection.scanFile(context, paths, null, null);
    }
}

请添加完整的stacktrace。那么,有什么办法解决这个问题吗?哪一行是
SimpleUtils
中的第33行?
final String[]path=new String[files.length]
看起来像
文件
空的
public static void requestMediaScanner(final Context context,
                                       final File... files) {
    if(files!=null){
        String[] paths = new String[files.length];
        int i = 0;
        for (final File file : files) {
        paths[i] = file.getPath();
        Log.e("tag", paths[i]);
        i++;
    }
    MediaScannerConnection.scanFile(context, paths, null, null);
    }
}