如何在jni中指定当前工作路径

时间:2011-09-27 11:05:48

标签: android path java-native-interface android-ndk filepath

我有Java Android应用程序(TestApp)。从我的TestApp我调用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;
}

我想在“data / data / com.app.test.testApp /”文件夹中创建文件,但我不能,我做错了什么,以及如何指定当前工作目录或提供当前应用程序路径?

2 个答案:

答案 0 :(得分:1)

您不能依赖fopen来使用“当前工作目录”。

在设备内存中,您只能访问应用程序数据文件夹中的文件。 您可以通过这种方式获取应用程序的私人文件夹:

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

它将位于/ data / data文件夹中。

答案 1 :(得分:0)

Android提供getcwd(),但我不认为这是你真正需要的。

如前所述,您将需要从Java检索基本路径部分。您可以在Java中实现一个方法来获取路径,并在需要时通过JNI从C / C ++中调用它。