0

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

1)在活动类中初始化我的“jni库”:

MyLib mylib = new MyLib();

2)通过在我的活动类中调用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)编写,它运行良好。

谢谢你的帮助。

4

2 回答 2

0

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

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

2)尝试设置文件世界可写使用chmod 777,看看是否能解决问题。请记住,设置世界可写确实是不安全的,一旦发现问题,您应该将其更改为更具限制性的内容。

于 2013-08-13T14:29:18.773 回答
0

我找到了答案,我正在使用重新定义 fopen 的库来读取资产文件夹中的内容。

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

现在它正在工作

于 2013-08-14T15:10:12.197 回答