【问题标题】:FileNotFound Exception when using Android Assets zip file [duplicate]使用 Android 资产 zip 文件时出现 FileNotFound 异常 [重复]
【发布时间】:2020-04-14 05:54:54
【问题描述】:

我正在尝试使用以下方法访问我存储在资产文件夹中的 zip 文件:

val filePath = Uri.parse("file:///android_asset/testfile_v1.1.1.zip").toString()

但是,即使我确定该文件在那里并且我不知道为什么,我也会收到 FileNotFound 错误。

感谢任何建议。

错误:

java.io.FileNotFoundException: file:/android_asset/testfile_v1.1.1.zip (No such file or directory)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:200)
        at java.io.FileInputStream.<init>(FileInputStream.java:150)
        at java.io.FileInputStream.<init>(FileInputStream.java:103)

用例:

private InputStream openInputStream(final String filePath, final String mimeType, final int mbrSize, final int types) throws IOException {
    final InputStream is = new FileInputStream(filePath);
    if (MIME_TYPE_ZIP.equals(mimeType))
        return new ArchiveInputStream(is, mbrSize, types);
    if (filePath.toLowerCase(Locale.US).endsWith("hex"))
        return new HexInputStream(is, mbrSize);
    return is;
}

【问题讨论】:

标签: java android kotlin inputstream


【解决方案1】:

如果路径/android_asset/testfile_v1.1.1.zip真的正确,可能是因为你在输入的非转义路径中漏掉了一个斜线,即file:///而不是file:////

【讨论】:

  • 我在添加第四个斜杠时遇到了完全相同的错误 - 但是 - 我不确定它是否有区别 - 但我正在将此值从我的应用程序传递到这个外部库 -这是使用文件的地方:github.com/NordicSemiconductor/Android-DFU-Library
  • 另外 - 我 100% 确定路径是正确的
  • 对不起,我错了。我忘记了/ 的斜线。
  • @user13125638 我不确定你应该使用任何形式的 URL。 FileInputStream 采用 File 对象或系统相关路径。也许你应该只使用"/android_asset/testfile_v1.1.1.zip"
  • 这也不起作用 - 我感觉这是因为我正在使用第 3 方库,它试图使用我的资产文件夹中的一个文件,它没有访问权限。知道在这种情况下该怎么做吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2011-02-02
  • 2014-06-26
  • 1970-01-01
相关资源
最近更新 更多