android用NDK在内存卡创建目录、文件并进行读写操作
来源:互联网 发布:adas哪个软件好 编辑:程序博客网 时间:2024/05/21 11:33
1.创建目录操作:
先判断要创建的目录是否存在,如果已经存在,返回状态0;如果没有存在,就创建该目录,正确执行创建目录操作就返回0,否则返回错误状态1.
char * workDir = "/sdcard/UltimatumTest/";if(0 == access(workDir,0)) {//目录存在return 0;} else{if(0 == mkdir(workDir,777)) {return 0;}else {return 1;}}
char * strtowrite = Jstring2CStr(env,strToWrite);//将Java字符串对象转变成C语言中的字符串数组FILE * file;char * workDir = "/sdcard/UltimatumTest/";//要读写的文件所在目录char *fileName = Jstring2CStr(env,inputFileName);//转换得到通过Java传来的文件文件名char *filePath = (char *)malloc(sizeof(char)*50);//申请动态内存strcat(filePath,workDir);strcat(filePath,fileName);//得到文件完整路径file = fopen(filePath,"a+");//如果文件存在就添加内容,如果文件不存在就创建新文件fputs(iteminfo,file);//写入操作fclose(file);//关闭文件流free(filePath);/释放动态内存,防止内存泄露return 0;正确 执行返回
所用到的讲Java字符串对象转变成C字符串的函数(注意这个函数有个缺陷,它不能转换空对象,也不能转换空字符串元素的对象):
char* Jstring2CStr(JNIEnv* env, jstring jstr) {char* rtn = NULL;jclass clsstring = (*env)->FindClass(env, "java/lang/String");jstring strencode = (*env)->NewStringUTF(env, "GB2312");jmethodID mid = (*env)->GetMethodID(env, clsstring, "getBytes","(Ljava/lang/String;)[B");jbyteArray barr = (jbyteArray)(*env)->CallObjectMethod(env, jstr, mid,strencode); // String .getByte("GB2312");jsize alen = (*env)->GetArrayLength(env, barr);jbyte* ba = (*env)->GetByteArrayElements(env, barr, JNI_FALSE);if (alen > 0) {rtn = (char*) malloc(alen + 1); //"\0"memcpy(rtn, ba, alen);rtn[alen] = 0;}(*env)->ReleaseByteArrayElements(env, barr, ba, 0); //释放内存return rtn;}
#include <sys/types.h>#include <sys/stat.h>#include <dirent.h>#include "com_example_ultimatumgame_GoldenWriter.h"
最后,也是最容易忽略的,在配置文件里加上对外存的读写权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
0 1
- android用NDK在内存卡创建目录、文件并进行读写操作
- 目录浏览及大文件在内存中的读写
- 创建文件并进行读写
- linux创建debugfs文件并进行读写操作
- Android在内存卡创建文件夹
- Android与LinuxC目录创建以及文件读写操作
- C语言遍历windows目录文件 并对文件进行读写操作
- android 创建目录/文件/读写文件
- android SD卡创建文件夹,文件并读写
- Java创建一个文本文件,并对其进行读写操作
- 关于文件在内存中读写的问题
- 利用Oracle目录对文件进行读写操作
- Android创建隐藏文件或者文件夹,并对其读写操作
- android创建隐藏文件或者文件夹,并对其读写操作
- Android创建隐藏文件或者文件夹,并对其读写操作
- Android创建隐藏文件或者文件夹,并对其读写操作
- Android创建隐藏文件或者文件夹,并对其读写操作
- android文件读写,ndk文件读写
- github 代码管理基础
- gcc 常用命令
- Redis操作的封装类
- 定时器 T3定(8 位)通过中断方式控制 LED
- MongoDB忘记密码、批量插入等命令
- android用NDK在内存卡创建目录、文件并进行读写操作
- leetcode-Search Insert Position (2014.3.10)
- spring 事务管理1
- 使用ServiceStackRedis链接Redis简介
- Codeforces 355C 策略题
- linux修改主机名
- step into step over step return区别
- Codeforces_Round_#241_DIV2_ABC
- Android NDK开发篇(二):NDK相关介绍