首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么fopen在Nexus5x android设备( C++ )上失败

为什么fopen在Nexus5x android设备( C++ )上失败
EN

Stack Overflow用户
提问于 2017-10-01 11:52:35
回答 1查看 623关注 0票数 0

我正在尝试将bmp保存到我的C++安卓应用程序中(我正在使用铬项目)。

代码语言:javascript
运行
复制
FILE* fp = fopen("/myimage.bmp", "wb"); // result: fp==NULL, errno==30

FILE* fp = fopen("/Pictures/myimage.bmp", "wb"); // result: fp==NULL, errno==2

电话是Nexus5x没有sdcard。设置了android.permission.WRITE_EXTERNAL_STORAGEandroid.permission.WRITE_INTERNAL_STORAGE

看起来我使用的是无效路径吗?哪条路径是有效的?这是一个调试输出,所以我需要任何能够工作的路径。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-01 11:59:58

如果要访问应用程序的内部存储,则应用程序存储的根路径是

代码语言:javascript
运行
复制
String ROOT_PATH = "/data/data/" + "com.your.package.name" + "/";

因此,如果要从内部存储中访问您的文件,您必须像这样声明文件路径。

代码语言:javascript
运行
复制
FILE* fp = fopen(ROOT_PATH + "myimage.bmp", "wb"); 

但这并不能像@CommonsWare建议的那样确保您的问题得到解决,

“应用程序存储的根路径是”--该路径因操作系统版本、用户帐户(主用户帐户与次要帐户)以及设备制造商的不同而不同。从来没有过哈德科德路径。如果NDK代码需要写到某个位置,那么Java代码应该在路径中传递,该路径是从方法(例如,getFilesDir())派生的。

所以我在你的问题中再次提到他的评论。

没有超级用户级别的权限,就不能在任何基于Linux的系统上写入/写入。“我正在与铬项目合作”--然后找出铬写文件的地方,然后在那里写你的文件。

这些是@CommonsWare提出的一些有价值的见解,可能对您有所帮助。谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46512110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档