java - 从 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 23
和targetSdkVersion 30
。我也在清单文件中设置了权限。<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
和
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
。仍然无法访问本机代码中的文件。我错过了什么吗?请回复。
解决方案
推荐阅读
- android - 如何从 Android Studio 为特定版本的 AOSP 开发应用程序?
- python - Selenium:获取特定班级的孩子
- java - Android:listView 和 getView-Method 的问题
- python-2.7 - 如何在python中自动将今天的日期作为整数获取
- algorithm - 为什么从范围树查询中获得的子树的数量是 O(log(n))?
- kotlin - 使用 Kotlin 按字母对数组进行排序
- javascript - Javascript - concat() 的作用类似于 push()
- c++ - 使用 C++ Stream API 发生访问冲突异常
- php - 我的 laravel 路由返回 404 错误但路由存在?
- java - 使用 spring-data-rest 返回所有结果