【发布时间】:2016-08-01 13:11:25
【问题描述】:
我在我的 NativeActivity 中使用 internalDataPath,在运行时访问它时看起来像这样:
"/data/data/app.name/files"
然后我尝试像这样写入文件:
- fopen("/data/data/app.name/files/test.txt", "wb");
- fwrite(buffer, size, count, m_handle);
- fclose(m_handle);
在这种情况下,fopen 将失败并且不会打开文件,这实际上意味着其他函数不会被调用,我通过查看文件系统进行了实验,而是尝试了以下路径。
"/Android/data/app.name/files/test.txt"
这有效,它创建文件并允许其他函数写入和关闭文件。
我的问题是,为什么 internalDataPath 以 /data/ 而不是 /Android/ 开头?我在应用程序的设置中做错了什么吗?我应该调用不同的函数吗?
值得一提的是
externalDataPath = "/storage/emulated/0/Android/data/app.name/files"
这意味着对于此设备(没有外部 SD),它指向正确的内部文件路径。
如果有任何不清楚的地方或者您需要更多信息,请告诉我。
谢谢
【问题讨论】:
-
这是什么设备和版本?我没有“Android”位置,只有根中的“数据”,这就是
internalDataPath返回的内容,所以fopen在类似的示例中对我来说很好。 -
设备:Nexus 7 Tablet (2012) 版本:Android 5.1.1 (LMY47V) 这是我的开发设备,所以它看到了相当多的闪烁和 root 等,所以它可能只是进入了一些损坏状态...我在 Android 6 上的 Galaxy S6 似乎在“/storage/emulated/0”路径中有“Android”文件夹和“data”文件夹。
-
我已经在 Nexus 7 2013 和 Android 6.0.1 上对其进行了测试。我不确定是什么导致
internalDataPath变量指向无效路径。您是否尝试过恢复出厂设置? -
我可能会尝试,这很奇怪,我想知道我是否应该设置一些东西,以便操作系统在安装/启动应用程序时为我创建这些文件夹?我猜我不应该手动创建它们吗?
-
也许我应该手动创建整个东西?我猜是有道理的。
标签: android android-ndk