【问题标题】:How to specify current working path in jni如何在 jni 中指定当前工作路径
【发布时间】:2011-11-25 22:53:31
【问题描述】:

我有 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/”文件夹中创建文件,但我不能,我做错了什么,以及如何指定当前工作目录或提供当前应用程序路径?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    它将位于 /data/data 文件夹中的某个位置。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-12-11
        • 2011-02-18
        • 1970-01-01
        • 2014-03-10
        • 2012-04-30
        • 2012-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多