在上一帖中,http://blog.csdn.net/jinghouxiang/article/details/49994983
说了 如何从 Android的jni层获取 Assets文件夹下 文件的路径名,
获取路径名后 需要将文件中的数据读取到char 数组中
假如 assets下 有一文件为 Shader/test.shader
rootDir 为我们读取文件的根目录: assets/
这样定义 加载 test.shader数据的 函数如下
:
bool ParseText::loadShader(std:: string &filename)
{
fullFileName = rootDir +filename;
LOG_INFO( "ParseText","begin to open file" );
zip_file * file = zip_fopen( apkArchive, fullFileName .c_str(), 0);
if(file == NULL)
{
return false ;
}
LOG_INFO( "ParseText","end open file" );
//char data[];
int size = file->bytes_left ;
char *data = (char *)malloc( sizeof(char )*size);
int state;
state = zip_fread(file, ( void *)data, size);
LOG_INFO( "ParseText","begin to read file: %d, %d" , state, size);
if(state == 0)
{
return false ;
}
data[size]= '\0';
if(!load(data, size))
{
return false ;
}
return true ;
}
以上使用libzip的 两个api,
zip_open 从 解压的 apk中 获取 路径名为 fullFileName的文件;