我有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 /”文件夹中创建文件,但我不能,我做错了什么,以及如何指定当前工作目录或提供当前应用程序路径?
答案 0 :(得分:1)
您不能依赖fopen来使用“当前工作目录”。
在设备内存中,您只能访问应用程序数据文件夹中的文件。 您可以通过这种方式获取应用程序的私人文件夹:
String dir = getPackageManager().getPackageInfo("com.example.app", 0).applicationInfo.dataDir;
它将位于/ data / data文件夹中。
答案 1 :(得分:0)
Android提供getcwd(),但我不认为这是你真正需要的。
如前所述,您将需要从Java检索基本路径部分。您可以在Java中实现一个方法来获取路径,并在需要时通过JNI从C / C ++中调用它。