首页 > 解决方案 > 从 C++ 读取的文件不起作用,但它在 android 的 JAVA 中起作用。为什么?

问题描述

我正在尝试在 Android 中访问本机代码中的文件,如下所示:

// native_model_path = /storage/emulated/0/Model
std::ifstream file(std::string(native_model_path).append("/ex_file.weights"));
if ((file.rdstate() & std::ifstream::failbit) != 0) {
    printf("Not able to open file");
    return;
}

这打印Not able to open file。但是在 JAVA 中打开同一个文件没有任何问题。我这样打开它:

String storage = Environment.getExternalStorageDirectory().getAbsolutePath();
if (!CheckFiles(inPath) ||
    !CheckFiles(storage + File.separator + "Model/", "ex_file.cfg") ||
    !CheckFiles(storage + File.separator + "Model/", "ex_file.weights")) {
    Log.e(LOG_TAG, "Either the input file path or model files path is invalid! Abort.");
    return;
}

这通过了。

我的minSdkVersion 23targetSdkVersion 30。我也在清单文件中设置了权限。<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>。仍然无法访问本机代码中的文件。我错过了什么吗?请回复。

标签: javaandroidc++filesystems

解决方案


推荐阅读