6

我有一个将备份文件保存在 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 卡的正确路径以正确处理文件?

4

3 回答 3

0

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

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

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

于 2011-06-10T20:52:33.920 回答
0

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

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

于 2013-07-25T13:45:55.700 回答
-1

我有 Sony Xperia tipo dual 和这个:

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

和这个:

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

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

于 2013-07-25T12:53:14.227 回答