jxlgdxwzm 2020-03-17 21:42 采纳率: 0%
浏览 201

求救文件管理器App测试解压缩功能时出错

错误日志:

2020-03-17 21:36:09.590 24111-24111/com.lavender.explorer W/System.err: java.io.FileNotFoundException: /storage/emulated/0/com.lavender.fileexplorer.models.FileInfo@58d5404 (No such file or directory)
2020-03-17 21:36:09.590 24111-24111/com.lavender.explorer W/System.err:     at java.io.FileInputStream.open0(Native Method)
2020-03-17 21:36:09.590 24111-24111/com.lavender.explorer W/System.err:     at java.io.FileInputStream.open(FileInputStream.java:231)
2020-03-17 21:36:09.590 24111-24111/com.lavender.explorer W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:165)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:112)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at com.lavender.fileexplorer.utils.Zip.unZip(Zip.java:91)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at com.lavender.fileexplorer.fragments.FolderFragment.onUnzip(FolderFragment.java:383)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at com.lavender.fileexplorer.models.ButtonBar.lambda$new$7(ButtonBar.java:119)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at com.lavender.fileexplorer.models.-$$Lambda$ButtonBar$IGXVJTJG2Ss0fppKSYpOnuj1peg.onClick(Unknown Source:2)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at android.view.View.performClick(View.java:6619)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at android.view.View.performClickInternal(View.java:6596)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at android.view.View.access$3100(View.java:785)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at android.view.View$PerformClick.run(View.java:25932)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at android.os.Handler.handleCallback(Handler.java:873)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at android.os.Looper.loop(Looper.java:201)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6861)
2020-03-17 21:36:09.591 24111-24111/com.lavender.explorer W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2020-03-17 21:36:09.592 24111-24111/com.lavender.explorer W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
2020-03-17 21:36:09.592 24111-24111/com.lavender.explorer W/System.err:     at

有关代码:

public void onUnzip()
    {
        List<FileInfo> selectedItems = adapter.selectedItems(false);
        Zip zip = new Zip();
        Toast.makeText(mainActivity.getApplicationContext(), "完成", Toast.LENGTH_LONG).show();
        zip.unZip(Environment.getExternalStorageDirectory()+"/"+selectedItems.get(0));
    }
    public List<FileInfo> selectedItems(boolean onlyFiles)
    {
        List<FileInfo> list = new ArrayList<>();

        for (int i = 0; i < getCount(); i++)
        {
            FileInfo fileInfo = getItem(i);

            if ((fileInfo != null) && fileInfo.isSelected())
            {
                if (onlyFiles)
                {
                    list.addAll(fileInfo.files());
                }
                else
                {
                    list.add(fileInfo);
                }
            }
        }

        return list;
    }
  • 写回答

1条回答 默认 最新

  • m0_73571101 2023-11-08 17:58
    关注

    这些图片显示了一段Android Java代码和一个错误日志。

    在第一张图片中的代码是一个从列表适配器中获取选定项的方法,并试图对这些选定的项进行解压缩。在onUnzip方法中,你使用了Zip类的一个实例来调用unzip方法。看起来你尝试解压缩选定项到外部存储目录中。

    第二张图片是Android日志输出,显示了FileNotFoundException。这意味着尝试访问的文件没有在预期的路径上找到。

    为了解决这个问题,你需要确保以下几点:

    你正在访问的文件路径是正确的。
    应用程序有足够的权限来访问文件系统的那部分。从Android 6.0(API 级别 23)开始,用户需要在运行时授予权限,除了在应用程序的manifest中声明它们。
    确保外部存储设备可用,并且应用程序已正确处理外部存储的挂载状态。
    如果你正在尝试创建文件,确保父目录已经存在。
    你需要检查unzip方法的实现以及如何处理文件路径,以确保解压缩过程能够找到正确的文件并成功执行。此外,确认应用有读写外部存储的权限,这通常通过请求WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限来实现。

    针对FileNotFoundException,检查下面几点可能会帮助你:

    验证Environment.getExternalStorageDirectory()是否返回了正确的外部存储路径。
    确认selectedItems.get(0)返回的对象确实代表了一个存在的文件路径。
    调试或日志输出这些路径以验证它们是否正确。
    如果有权限问题,确保你的应用已经请求并被授予了必要的权限。如果你的目标SDK版本是23(Android 6.0)或更高,记得需要在运行时请求权限,并且要处理用户可能拒绝权限请求的情况。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据