当前位置:编程学习 > wap >>

android JNI 用C读写文件操作

我想用C本地库读写sdcard下的aa.txt,已经建好了,可是用C编写的代码读写的时候总是不成功,代码如下(本地库的)Java_oo_oo_kkk_stringFromJNI( JNIEnv* env,
                                        jobject thiz )
{
       LOGI("MyJNI is called!");
       int fd,size;
       char s[]="11111",buffer[50];
fd=open(path,O_RDWR|O_CREAT);
LOGI("输出到了这个点B");
if(fd==NULL)
{
return (*env)->NewStringUTF(env, "文件打开失败");
}
write(fd,s,sizeof(s));
close(fd);
fd=open(path,O_RDONLY);
if(fd==NULL)
{
return (*env)->NewStringUTF(env, "文件读出失败");
}
size=read(fd,buffer,sizeof(buffer));
close(fd);
LOGI(buffer);
LOGI("输出到了这个点C");

       return (*env)->NewStringUTF(env,buffer);
}
请教做过的,有过经历的同学帮帮忙。QQ1053155108,晨听雨
--------------------编程问答-------------------- 加点调试代码看看,函数有没执行成功什么的.只试过读NAND中的PNG图片,你有没SDCARD的读写权限? --------------------编程问答-------------------- 要不先读个NANDFLASH中的TXT文件看看!!! --------------------编程问答-------------------- 所谓不成功,是运行到了那一步不成功啊?还是根本不能进入这个函数啊 --------------------编程问答-------------------- 谢谢各位了 ,上面的问题解决了,后来用的fopen打开的,而不是直接用的open。权限问题
我用的是fd=fopen(path,"rw");读写权限,成功读出sdcard/aa.txt里的内容,现在遇到一个困难,就是如何将java中的string参数传到C中变成char数组,就是string->jstring->char[],求一个代码例子,至于我这个例子,现将成功调试过得代码奉上
const char *path = "/sdcard/ee.txt";
jstring
Java_com_test_JNITest_stringFromJNI( JNIEnv* env,
                                        jobject thiz )
{
       LOGI("MyJNI is called!");
       int size;
       FILE *fd;       
       char a='b';
       char s[]="111111111",buffer[16];
       memset(buffer,0,16);
fd=fopen(path,"rw");
if(fd<0)
{
return (*env)->NewStringUTF(env, "444444444");
}
size=fread(buffer,sizeof(char),15,fd);
fclose(fd);
LOGI("0000000000000000000");
LOGI(buffer);
return (*env)->NewStringUTF(env, buffer);
      
} --------------------编程问答--------------------
引用 2 楼 xqhrs232 的回复:
斯蒂芬舒服舒服舒服
要不先读个NANDFLASH中的TXT文件看看!!!
水电费是否撒地方 --------------------编程问答--------------------
引用 3 楼 lazy_2010 的回复:
所谓不成功,是运行到了那一步不成功啊?还是根本不能进入这个函数啊
的爽肤水丰富撒发生 --------------------编程问答-------------------- 你确定可以吗?我试过了怎么还是读不出文件内容?求指教 --------------------编程问答-------------------- http://www.th7.cn/Article/bc/ja/200808/328118.html
jstring和char*的转换,自己看看吧。 --------------------编程问答-------------------- 文件目录直接用const char *path = "/sdcard/ee.txt"; 这个可以么?
补充:移动开发 ,  Android
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,