2011-09-27 40 views
2

我有Java Android應用程序(TestApp)。從我TestApp我打電話的功能從JNI代碼:如何在jni中指定當前工作路徑

JNIEXPORT jint JNICALL Java_com_app_test_testApp_CreateFile(JNIEnv* env, jobject thiz, jobject jclass) { 
    pFile = fopen ("/NDK_Log.txt", "a+"); 
    // Get's current date time and print it in the log file. 
    dateTime = time(NULL); 
    currentTime = ctime(&dateTime); 
    fprintf(pFile, "\n\n--------------------------------------------------------------------------\n"); 
    fprintf(pFile, "\t\t\t\t\t\t %s", currentTime); 
    fprintf(pFile, "--------------------------------------------------------------------------\n\n"); 
    fprintf(pFile, ">>> Enter Initialize <<<\n"); 
    #endif 

    return 0; 
} 

我要創建文件「數據/數據/ com.app.test.testApp /」文件夾,但我不能,我在做什麼錯,以及如何指定當前工作目錄或給出當前應用程序的路徑?

回答

1

你不能依靠fopen來使用「當前工作目錄」。

在設備內存中,只能訪問應用程序數據文件夾中的文件。 你可以讓你的應用程序的私有文件夾是這樣的:

String dir = getPackageManager().getPackageInfo("com.example.app", 0).applicationInfo.dataDir; 

這將是/數據/數據文件夾的地方。

+0

這意味着我無法通過NDK獲取目錄? –

+0

您可以使用對Java代碼的JNI調用來獲取目錄。 –

0

Android提供了getcwd(),但我不認爲這就是你真正需要的。

如前所述,您需要從Java中檢索基本路徑部分。如果需要,您可以在Java中實現一個方法來獲取路徑並通過JNI通過JNI調用它。

相關問題