我尝试使用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");
}
如何成功加载文件?
答案 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);
如果您仍然遇到问题,请查看以下资源:
访问原始文件
虽然不常见,但您可能需要访问原始文件 目录。如果您这样做,那么保存
res/
中的文件将无法工作 你,因为从res/
读取资源的唯一方法是使用 资源ID。相反,您可以将资源保存在assets/
中 。目录保存在
assets/
目录中的文件没有给出资源ID,所以 您无法通过R
类或XML资源引用它们。 相反,您可以像正常一样查询assets/
目录中的文件 文件系统并使用AssetManager
读取原始数据。但是,如果您只需要能够读取原始数据(例如 视频或音频文件),然后将文件保存在
读取字节流res/raw/
目录中 使用openRawResource()
JMatIO来源:The relevant MatFileReader signature