2017-11-17 17 views
-1

NDKを使用してCのAssertフォルダから.txtファイルにアクセスできませんでした。 誰かがアイデアを持っていますか?どのように私のCファイルからファイルにアクセスしますか?私は.txtのネイティブCのAssertフォルダから.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 "); 
} 
+0

現在、私はAssertフォルダにアクセスできますが、アサートフォルダからファイルにアクセスすることはできません –

答えて

0
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"); 

にアクセスする必要があるのHello-jni.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); 

} 

今私はアサートファイルからファイルを読み取ることができています。

関連する問題