jni层直接读取手机sdcard上的压缩文件

今天遇到一个需求,就是将一个zip文件读入内存进行处理。当然也可以是普通文件。

例如将sdcard/..../aaa.zip读入 char *的变量中。

jstring native_calculateSearchTime(JNIEnv *env, jobject obj,jstring assetsZipFileName, jstring txtFilePath) {

char *iBuf = NULL;
size_t len = 0;
int ret = -1;
char *fileName = (char *) (*env)->GetStringUTFChars(env, assetsZipFileName, 0);
char *txtPath = (char *) (*env)->GetStringUTFChars(env, txtFilePath, 0);
//--------------------------读取文件---------------------------
FILE *fd;
fd = fopen(fileName, "rw");

//--------------------------计算文件大小------------------------
ftell(fd);
jlong curpos;
//记录首地址
curpos = ftell(fd);
//移动到文件末尾
fseek(fd, 0L, SEEK_END);
//获取到首部的偏移,即为文件长度。
len = ftell(fd);
//返回首地址
fseek(fd, curpos, SEEK_SET);

//--------------------------读入缓冲区------------------------
iBuf = (char *) malloc(len);//申请内存大小
ret = fread(iBuf, sizeof(char), len, fd);
fclose(fd);

//其他业务操作
}

 

你可能感兴趣的:(android)