0

NDKを使用してファイルを読み取ることに関していくつか質問があります。

さまざまな質問と回答を閲覧すると、この短いスレッドが見つかりました。正しく理解していれば、データを抽出するファイルをSDカードに保存して、標準のC fopen()関数で開くことができると書かれています。 。私はこれをやろうとしましたが、うまくいきません。SDカードのルートディレクトリに保存されているFILE* f = fopen("file_name");場所を使用しているので、パスに問題があると思います。file_name

また、通常のデスクトップアプリケーションで行うように、ファイルをfopen()で開いて読み取ることができる場合、SDカードから直接読み取る場合は、ifstreamを使用してフォーマットされた入力を読み取ることができますか?

助けてくれてありがとう。

NAX

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 に答える