[英]Writing to internal storage in c++ from jni
我正在尝试通过以下步骤在应用程序的内部存储目录中写入文件:
1)在Acivity类中初始化我的“ 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)编写,它运行良好。
谢谢你的帮助。
更多信息会有所帮助。 基于路径,我假设您正在使用Linux。 我首先要检查路径的权限。 以下几点建议
1)尝试在您的主目录中打开一个文件,看看是否有相同的问题。
2)尝试使用chmod 777
将文件世界设置为可写,然后查看是否可以解决问题。 请记住,将世界设置为可写确实是不安全的,一旦发现问题,应将其更改为更具限制性的内容。
我找到了答案,我使用的是redefinig fopen库来读取资产文件夹中的内容。
#define fopen(name, mode) android_fopen(name, mode)
现在正在工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.