获取JNI中项目内文件的相对路径

时间:2013-07-12 01:50:09

标签: java android-ndk

使用JNI我无法访问这样的文件:

ifstream file("file.txt");

file.txt位于文件夹jni中,该文件夹与本机代码文件相同

我只能访问绝对路径("/sdcard/file.txt"),但这个技巧不是我想要的。 试过"data/data/com.example.SomeExample/jni/file.txt"但没有运气。

在使用本机代码时,如何将文件称为相关路径?

1 个答案:

答案 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