【问题标题】:How to load *.mat file in raw folder of android如何在android的原始文件夹中加载* .mat文件
【发布时间】:2015-07-13 02:45:06
【问题描述】:

我尝试使用 JMatIO 在 Android 4.4 中加载 .mat 文件。

.mat 文件在外部存储中时它运行良好,但当文件在应用程序的raw 文件夹中时它不起作用。目前,该应用程序找不到任何*.mat 文件。日志只打印消息“加载矩阵文件失败”。

下面是我正在使用的代码:

try {
        mfr = new MatFileReader("android.resource://" + getPackageName() + "/raw/rm.mat");
} catch (IOException e) {
        e.printStackTrace();
        Log.d(TAG, "fail to load matrix file");
        System.exit(0);
}
if (mfr != null) {
        Log.d(TAG, "Success to load matrix file");
}

如何才能成功加载文件?

【问题讨论】:

  • 这是哪个版本的安卓?你得到什么样的错误?请将其添加到您的问题中。当你在它的时候,请删除mat标签,因为你的问题与OpenCV无关...

标签: android file-io android-resources ioexception mat-file


【解决方案1】:

您似乎没有使用此代码正确访问该文件:

mfr = new MatFileReader("android.resource://" + getPackageName() + "/raw/rm.mat");

据我了解,您正在尝试访问位于您\res\raw\ 文件夹中的文件。这通常使用R.raw.filname_without_extension 完成。在您的情况下,您应该尝试:

mfr = new MatFileReader(getResources().openRawResource(R.raw.rm), MatFileType.Regular);

如果您仍有问题,请查看以下资源:

  1. 文档:Accessing Resources

    访问原始文件

    虽然不常见,但您可能需要访问您的原始文件和 目录。如果你这样做了,那么将你的文件保存在res/ 将不起作用 你,因为从res/ 读取资源的唯一方法是使用 资源标识。相反,您可以将资源保存在assets/ 目录。

    assets/ 目录中保存的文件没有资源 ID,因此 您不能通过 R 类或 XML 资源引用它们。 相反,您可以像普通一样查询assets/目录中的文件 文件系统并使用AssetManager读取原始数据。

    但是,如果您只需要读取原始数据的能力(例如 视频或音频文件),然后将文件保存在res/raw/ 目录中并 使用openRawResource()读取字节流

  2. JMatIO 来源:The relevant MatFileReader signature

  3. 所以问题:R.raw.anything cannot be resolved
  4. 所以问题:How to get File from R.raw
  5. 所以问题:How to read file from res/raw by name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多