如何在android的raw文件夹中加载* .mat文件

时间:2015-07-13 02:45:06

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

我尝试使用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");
}

如何成功加载文件?

1 个答案:

答案 0 :(得分: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/读取资源的唯一方法是使用   资源ID。相反,您可以将资源保存在assets/中   。目录

         

    保存在assets/目录中的文件没有给出资源ID,所以   您无法通过R类或XML资源引用它们。   相反,您可以像正常一样查询assets/目录中的文件   文件系统并使用AssetManager读取原始数据。

         

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

    读取字节流
  2. JMatIO来源:The relevant MatFileReader signature

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