关于使用NDK读取文件,我有几个问题。
浏览不同的问题和答案,我找到了this短线程,如果我理解正确的话,说你可以将要从中提取数据的文件保存到SD卡上,然后打开它们标准的C fopen()函数。我试图这样做,但它不起作用。我认为这是路径的问题,因为我正在使用FILE* f = fopen("file_name");
,其中file_name
存储在SD卡的根目录中。
另外,如果我们通常在任何桌面应用程序上使用fopen()打开和读取文件,那么我们是否可以使用ifstream读取格式化输入,如果我们直接从SD卡读取?
感谢您的帮助。
NAX
答案 0 :(得分:1)
使用JNI在Android上正常运行文件IO。也许您正在尝试使用错误路径打开文件而不检查返回代码?我修改了hello-jni示例,以证明确实可以打开文件并写入它。我希望这会有所帮助。
#include <string.h>
#include <jni.h>
#include <stdio.h>
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)!");
}
以下是在我的手机上运行后的结果(带有SD卡):
$ adb -d shell cat /sdcard/hello.txt
HELLO WORLD!