NDK读取本地文件

在进行opencv4android开发时,我们往往需要在native环境下读取训练好的xml文件,为此我们可以采取以下的方法:

第一步:

在Java端新建 一个native函数

在Java端新建 一个native函数

第二步:

在工程目录main下新建一个assets文件夹,并加入想要读取的文件到里面:


NDK读取本地文件_第1张图片
目录结构
文件内容

第三步:

在native端加入如下代码:

AAssetManager* mgr = AAssetManager_fromJava(env, am);

if(mgr==NULL)

{

LOGI(" %s","AAssetManager==NULL");

return;

}

/*获取文件名并打开*/

const char*filename = env->GetStringUTFChars(filename_,0);

AAsset* asset = AAssetManager_open(mgr, filename,AASSET_MODE_UNKNOWN);

env->ReleaseStringUTFChars(filename_, filename);

if(asset==NULL)

{

LOGI(" %s","asset==NULL");

return;

}

/*获取文件大小*/

off_tbufferSize = AAsset_getLength(asset);

LOGI("file size        : %d\n",bufferSize);

char*buffer=(char*)malloc(bufferSize+1);

buffer[bufferSize]=0;

intnumBytesRead = AAsset_read(asset, buffer, bufferSize);

LOGI("%s",buffer);

free(buffer);

/*关闭文件*/

AAsset_close(asset);

第五步:

报错,参考文章NDK读取本地文件时,提示AAssetManager_fromJava未定义

你可能感兴趣的:(NDK读取本地文件)