使用JNI我无法访问这样的文件:
ifstream file("file.txt");
file.txt
位于文件夹jni
中,该文件夹与本机代码文件相同
我只能访问绝对路径("/sdcard/file.txt"
),但这个技巧不是我想要的。
试过"data/data/com.example.SomeExample/jni/file.txt"
但没有运气。
在使用本机代码时,如何将文件称为相关路径?
答案 0 :(得分:0)
jni
文件夹未添加到您的APK中。如果您希望将文件与应用程序捆绑在一起,我建议将它们放在assets
文件夹中。如果assets
文件夹尚不存在,请将其放在与jni
文件夹相同的级别(因此它们是兄弟姐妹)。
如果采用这种方法,则必须使用资产管理器。它有一个本机接口,可以在android / asset_manager.h中找到。要打开文件,请使用:
AAsset *a = AAssetManager_open(pAssetManager, "file.txt", AASSET_MODE_BUFFER);
if (a)
{
const void *res = AAsset_getBuffer(a);
//do something with the file!
AAsset_close(a);
}
您可以传入不同的标记,而不是AASSET_MODE_BUFFER
。