ndk之AAssetManager
来源:互联网 发布:java设计模式书籍 知乎 编辑:程序博客网 时间:2024/06/08 13:31
用于操作asset,其中包含了各种对asset文件的操作方法
//需要引入的头文件#include <android/asset_manager_jni.h>
基本步骤
AAssetManager* AAssetManager_fromJava(JNIEnv* env, jobject assetManager);//open eg:AAsset* AAssetManager_open(AAssetManager* mgr, const char* filename, int mode);//operate eg:int AAsset_read(AAsset* asset, void* buf, size_t count);//close eg:void AAsset_close(AAsset* asset);
简单使用,有2处不明白的地方。
1.利用文件描述符读取内容始终不对
2.api中采用64位长度获取大小的值很奇怪,没看懂
有知道的兄弟麻烦告诉我下
AAssetManager *aAssetManager=AAssetManager_fromJava(env,assetManager); AAsset *aAsset=AAssetManager_open(aAssetManager,"asset_test.txt",AASSET_MODE_UNKNOWN); //实际测试发现返回的数据末尾没有\0,如果需要打印信息自己补 //获取文件的全部内容 char *buff=(char*)AAsset_getBuffer(aAsset); off_t len=AAsset_getLength(aAsset); LOGI("%s",buff); LOGI("%d",len); char *actual_buff=malloc(sizeof(char)*len+1); actual_buff[len]='\0'; memcpy(actual_buff,buff,len); LOGI("%s",actual_buff); //读取 char *read_buff=malloc(sizeof(char)*5+1); read_buff[5]='\0'; AAsset_read(aAsset,read_buff,5); LOGI("%s",read_buff); //剩余数据长度 off_t remain=AAsset_getRemainingLength(aAsset); LOGI("%d",remain); //seek AAsset_seek(aAsset,0,SEEK_SET); remain=AAsset_getRemainingLength(aAsset); LOGI("%d",remain); //这一部分读的内容始终不对,不知道为什么// //file descriptor// off_t start,lens;// int fd=AAsset_openFileDescriptor(aAsset,&start,&lens);// FILE *fp=fdopen(fd,"r");// char *d_buff=malloc(sizeof(char)*lens+1);// memset(d_buff,0,lens+1);// fread(d_buff,1,lens+1,fp);// fclose(fp);// LOGI("%s",d_buff);// free(d_buff);// 这个64返回的值很奇怪不知道为什么// off64_t len64=AAsset_getLength64(aAsset);// LOGI("%d",len64); AAsset_close(aAsset); //遍历文件 AAssetDir *aAssetDir=AAssetManager_openDir(aAssetManager,"test"); char *file_list; do{ file_list=AAssetDir_getNextFileName(aAssetDir); if(file_list) LOGI("%s",file_list); }while (file_list);
源码地址
0 0
- ndk之AAssetManager
- Android NDK之Hello NDK
- android之NDK开发
- android ndk之常用命令
- android ndk之常用命令
- NDK 之 JNI数据类型
- NDK 之 JNI数据传输
- NDK 之 注意事项
- Android之NDK开发
- android NDK之Log
- Android之NDK开发
- NDK 之大门开启
- Android之NDK开发
- Android之NDK开发
- Android之NDK开发
- Android之NDK开发
- Android之NDK开发
- Android之NDK开发
- 【杭电】 1001 Sum Problem
- 现代化Web的微服务架构最佳实践全景
- 深度增强学习方向论文整理
- [Android Studio 权威教程]打包、生成jks密钥、签名Apk、多渠道打包
- 使用百度地图SDK实现定位功能,定位你当前的位置
- ndk之AAssetManager
- 使用润乾参数模板后如何对参数进行二次处理
- Linux命令--sysctl
- Dapper,大规模分布式系统的跟踪系统
- 面试总结(人丑要多读书)
- Spinner下拉框遮挡Spinner显示框解决办法
- 微信小程序中rpx与rem单位使用
- 四种数据库随机获取10条数据的方法
- 自定义百度网盘分享密码 提取码