【问题标题】:How to Access .txt file from Assert folder in native c?如何从本机 c 中的 Assets 文件夹访问 .txt 文件?
【发布时间】:2017-11-17 14:17:28
【问题描述】:

我无法使用 NDK 从 C 中的 Assert 文件夹访问 .txt 文件。 有谁知道如何从我的 C 文件中访问该文件。

public class HelloJni extends AppCompatActivity {
    static {
        System.loadLibrary("hello-jni");
    }
    private AssetManager mgr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_jni);
        mgr = getResources().getAssets();
        stringFromJNI(mgr);

    }
    public native String  stringFromJNI(AssetManager mgr);

}

在 Hello-jni.c 文件中我需要访问 .txt

JNIEXPORT jstring JNICALL
Java_com_inspiringlife_fido_HelloJni_stringFromJNI( JNIEnv* env,
                                                  jobject thiz, jobject assetManager )
{
    //access .txt file from assert folder 
    return (*env)->NewStringUTF(env, "Hello JNI ");
}

【问题讨论】:

  • 目前我可以访问 Assert 文件夹,但无法访问 assert 文件夹中的文件

标签: android android-ndk


【解决方案1】:
AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
assert(NULL != mgr);

AAsset* testAsset = AAssetManager_open(mgr, "hello.txt", AASSET_MODE_UNKNOWN);
if (testAsset)
{
    assert(testAsset);

    size_t assetLength = AAsset_getLength(testAsset);

    __android_log_print(ANDROID_LOG_DEBUG, "!!!!Native Audio", "Asset file size: %d\n", assetLength);

    char* buffer = (char*) malloc(assetLength + 1);
    AAsset_read(testAsset, buffer, assetLength);
    buffer[assetLength] = 0;

    __android_log_print(ANDROID_LOG_INFO, "!!!!!Test Asset Manager", "The value is %s", buffer);

    AAsset_close(testAsset);
    free(buffer);
}
else
{
    __android_log_print(ANDROID_LOG_ERROR, "!!!!!Test Asset Manager", "Cannot open file");
}

//rsa_gen_keys(pub, priv);
return (*env)->NewStringUTF(env, "!!!Hello from JNI");

现在我可以从断言文件中读取文件了。

【讨论】:

    猜你喜欢
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2014-06-17
    • 2012-09-05
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多