【发布时间】:2015-11-04 14:48:59
【问题描述】:
这个写入到文件的简单程序在我的模拟器中运行良好,因为我在 sdcard 中生成了一个文本文件(文本文件中包含 HELLO WORLD)以及给定的消息模拟器画面。
jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
jobject thiz )
{
FILE* file = fopen("/sdcard/hello.txt","w+");
if (file != NULL)
{
fputs("HELLO WORLD!\n", file);
fflush(file);
fclose(file);
}
return (*env)->NewStringUTF(env, "Hello from JNI (with file io)!");
}
但是当我尝试使用此程序读取文件时,我遇到了问题。它在模拟器屏幕或 logcat 上不输出任何内容。从上面的程序可以看出,sdcard 的位置或使用 FILE 操作肯定没有问题。如何解决?
JNIEXPORT jstring JNICALL Java_com_example_myproject_MainActivity_doSomething( JNIEnv* env, jobject thiz)
{
// Counts the characters inside file
char ch;
int cnt= 0;
FILE* fptr = fopen("/sdcard/hello.txt","r");
while((ch=fgetc(fptr))!=EOF)
cnt++;
fclose(fptr);
LOGE("cnt: %d",cnt);
return (*env)->NewStringUTF(env, "Hello from JNI (with file io)!");
}
谢谢
编辑:
上述读取文件的代码在 linux gcc 中运行良好,但在 Android 中运行时出错。像 Andrew 所说的那样改变它可以解决它。
【问题讨论】:
标签: android file android-ndk