繁体   English   中英

无法在 sdcard android 上写入文件

[英]Unable to write files on sdcard android

我有一个将备份文件保存在 SD 卡上的应用程序。 它在 HTC Nexus One 和其他 android 手机上运行良好,但在某些手机上它不起作用(读取或写入)。

在清单中我设置了这个:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

例如(当我设置录制文件的路径时):

OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory()
                    + "/mydata.dat");
//Writing file...(It doesn't work)

如何获得 SD 卡的正确路径以正确处理文件?

通常,Android 不允许您将文件直接写入 SDCard 的根目录。 您必须在 SDCard 根目录中创建一个文件夹,然后将文件写入新创建的文件夹中。

试试这个,它应该可以工作。

当你说“它不起作用”时......究竟会发生什么? 你的意思是程序运行没有投诉,但文件没有被写入 sdcard,还是你的意思是别的?

如果文件根本没有到达那里,那不是你的错,而是手机制造商的错。 我见过一些设备从 getExternalStorageDirectory() 返回“/mnt/sdcard”,但这并不是真正的 sdcard 路径,例如,在至少一台摩托罗拉设备和三星 Galaxy Tab (7") 上,即使这指向内部存储,也会返回 /mnt/sdcard。每个设备上的外部存储是 /mnt/sdcard-ext。

对此,您无能为力——原始设备制造商在对您撒谎。 如果您想要解决方法,您可以阅读 /proc/mounts 并尝试找到 sdcard 的实际路径,但 /mnt/sdcard 也会显示在那里,并且没有保证区分真相的方法所有设备。

我有 Sony Xperia tipo dual 和这个:

FILE* pFile = fopen("/mnt/sdcard/mydata.dat","w+");

和这个:

FILE* pFile = fopen("/sdcard/mydata.dat","w+");

两者都工作正常。 (我是在 Native 中完成的)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM