JNI的字符串交互处理
JAVA层和native层进行字符串交互处理:
1.进行字符串操作的时候,如果还想要进行别的操作可以参考官网的操作,比如在http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html网址内的String Operations中就存在着这些许多操作。
2.在MainActivity的中增加C语言的方法,这里只需要增加
public static native void updateFile(String path);
该方法即可。
3.对项目重新编译,重新获取到.h文件,可以查找
com_example_ndkdemp_MainActivity.h文件是否具有刚才写的方法。
4.在c文件里面写刚才写的方法内容,直接从.h文件拷贝方法名。
5.利用
(env)->GetStringUTFChars(env,path,NULL);
方法获取到从JAVA传过来的路径指针:const char file_path
并进行字符串操作,下面的操作是关于写入一个文件中的操作:
//生成native的Char指针
const char file_path=(env)->GetStringUTFChars(env,path,NULL);
if(file_path!=NULL){
LOGV("from C file_path %s", file_path);
}
//打开文件,进行追加打开
FILEfile=fopen(file_path,"a+");
if(file!=NULL){
LOGV("from C open file success");
}
//写入文件
char data[]="I am Boy";
int count=fwrite(data,strlen(data),1,file);
if(count>0){
LOGV("from C write file success");
}
//关闭文件
if(file!=NULL) {
fclose(file);
}
//释放资源
(env)->ReleaseStringUTFChars(env,path,file_path);
注意项目错误: LOGV("from C file_path %s", file_path);需要添加新的消息的时候注意按照C的格式操作,%s代表是字符数组。
共同学习,写下你的评论
评论加载中...
作者其他优质文章