Android资产和NDK:格式化输入、文件名和解决方法

Android资产和NDK:格式化输入、文件名和解决方法,android,android-ndk,fopen,file-io,Android,Android Ndk,Fopen,File Io,关于使用NDK读取文件,我有几个问题 浏览不同的问题和答案时,我发现了一个简短的线索,如果我理解正确的话,它说您可以将要从中提取数据的文件保存到SD卡上,然后使用标准的C fopen()函数打开它们。我试过这么做,但没用。我认为这是路径的问题,因为我使用的是FILE*f=fopen(“FILE_name”)其中文件名存储在SD卡的根目录中 此外,如果可以像在任何桌面应用程序上一样使用fopen()打开和读取文件,那么如果直接从SD卡读取,是否可以使用ifstream读取格式化输入 谢谢你的帮助

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

浏览不同的问题和答案时,我发现了一个简短的线索,如果我理解正确的话,它说您可以将要从中提取数据的文件保存到SD卡上,然后使用标准的C fopen()函数打开它们。我试过这么做,但没用。我认为这是路径的问题,因为我使用的是
FILE*f=fopen(“FILE_name”)
其中
文件名
存储在SD卡的根目录中

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

谢谢你的帮助


NAX文件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)!");
}

是否可以使用ndk直接从内存中读取?请看以下问题:
$ adb -d shell cat /sdcard/hello.txt
HELLO WORLD!