【问题标题】:(Android) Read matlab file from assets(Android) 从资产中读取 matlab 文件
【发布时间】:2013-05-31 10:57:50
【问题描述】:

我使用 jmatIO 库来读取 .mat 文件。在纯 java 中,我可以像这样设置 matFileReader 的路径

MatFileReader mfr = new MatFileReader("/theta-phi_small_param5.mat");

我可以访问所有 .mat 数据。在 android 里面,我把 .mat 文件放到 assets 文件夹中,然后我试着像这样访问它

mfr = new MatFileReader("file:///assets/theta-phi.mat");

但它不起作用。如何获取 assets 文件夹中 mat 文件的路径,以便使用 MatFileReader 读取它?

【问题讨论】:

    标签: android file matlab path assets


    【解决方案1】:

    MatFileReader 是否接受 InputStream?如果是这样,您可以这样做:

    InputStream in = getAssets().open("theta-phi.mat");
    

    它也可以使用:

    File file = new File("file:///android_asset/theta-phi.mat");
    

    更新:由于 MatFileReader 不支持 InputStream 并且上面的文件解决方案不起作用,我猜你最好的选择是 copy the file from the Assets folder to your apps External/Internal storage 并从那里访问文件。

    【讨论】:

    • 不,它不接受输入流,但我尝试读取文件,虽然我没有编译时错误,但它在我尝试的行中给了我一个运行时错误“NullPointerException”读取文件
    • matFileReader 也会抛出 FileNotFoundException(没有这样的文件或目录):/
    • 嗯,你更新的答案有效,我使用 InputStream/OutputStream 我将文件写入 sd 卡,然后我用“ File f = new File("/sdcard/theta-phi. mat");" 效果很好!谢谢您的回答。我面临的唯一问题是我没有为模拟器设置 SD 卡,并且出现了一些错误:P
    • 啊,太好了。我很高兴你让它工作。您真的必须设置 SD 卡吗?我猜想使用 Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) 检查是否存在外部存储就足够了,如果存在,则将文件读/写到 context.getExternalCacheDir().getAbsolutePath( ) 如果不是你从 context.getCacheDir().getAbsolutePath() 读/写
    猜你喜欢
    • 2018-01-19
    • 2016-04-25
    • 2012-03-21
    • 2018-11-14
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多