0

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

ifstream file("file.txt");

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

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

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

4

1 回答 1

0

jni文件夹未添加到您的 APK。如果您希望文件与您的应用程序捆绑在一起,我建议将它们放在assets文件夹中。如果该assets文件夹尚不存在,请将其放置在与该jni文件夹相同的级别(因此它们是同级的)。

如果您采用这种方法,您将不得不使用 Asset Manager。这有一个本地接口,在 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.

于 2013-08-16T19:12:00.770 回答