0

我有几个关于使用 NDK 读取文件的问题。

浏览不同的问题和答案,我发现了这个简短的线程,如果我理解正确,它说您可以将要从中提取数据的文件保存到 SD 卡上,然后使用标准 C fopen() 函数打开它们. 我试图这样做,但它不起作用。我认为这是路径的问题,因为我使用FILE* f = fopen("file_name");file_name是存储在 SD 卡根目录中的位置。

另外,如果文件可以像我们通常在任何桌面应用程序上那样使用 fopen() 打开和读取,那么如果我们直接从 SD 卡读取,是否可以使用 ifstream 读取格式化的输入?

谢谢您的帮助。

纳克斯

4

1 回答 1

1

文件 IO 在使用 JNI 的 Android 上运行良好。也许您正试图打开一个路径错误的文件而不检查返回码?我修改了 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!
于 2013-03-06T07:23:58.080 回答