从jni写入c ++中的内部存储

时间:2013-08-13 14:04:39

标签: android android-ndk

我正在尝试使用以下步骤在我的应用程序的内部存储目录中编写一个文件:

1)在Acivity Class中初始化我的“jni库”:

MyLib mylib = new MyLib();

2)通过在我的Activity Class中调用getFilesDir来提供内部存储路径:

mylib.setSavePath(getFilesDir());

3)从我的库中调用方法mylib.save(),该方法在c ++中执行以下操作: 打开我要写的文件:

fp = fopen(pathtotheinternalstorage+filename,"w");
if (!fp) {
    SetError(XML_ERROR_FILE_NOT_FOUND, filename, 0);
    return _errorID;
}

文件路径正确:/data/data/com.myapp/files/myfile.xml 但fopen失败了,我不知道我做错了什么。 如果我用一些java代码(openFileOutput)编写,它运行良好。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

更多信息会有所帮助。根据路径,我假设你在Linux机器上。我首先检查路径的权限。以下几点建议

1)尝试打开主目录中的文件,看看是否有同样的问题。

2)尝试使用chmod 777将文件世界设置为可写,然后查看是否可以解决问题。记住设置世界可写是真的不可靠,你应该在发现问题后将其改为更严格的限制。

答案 1 :(得分:0)

我找到了答案,我正在使用一个重新装入fopen的库来读取资产文件夹。

#define fopen(name, mode) android_fopen(name, mode)

现在它正在运作