无法在sdcard android上写文件

时间:2011-06-10 20:43:10

标签: android android-sdcard

我有一个应用程序,可以将备份文件保存在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卡来正确操作文件?

3 个答案:

答案 0 :(得分:0)

当你说“它不起作用”时......究竟发生了什么?你的意思是程序运行没有投诉,但文件没有写入SD卡,或者你的意思是什么?

如果文件没有到达那里,那不是你的错,这是手机制造商的错。我已经看到几个设备从getExternalStorageDirectory()返回“/ mnt / sdcard”,但这不是真正的SD卡路径!例如,在至少一个Motorola设备和Samsung Galaxy Tab(7“)上,即使这指向内部存储,也会返回/ mnt / sdcard,并且每个设备上的外部存储都是/ mnt / sdcard-ext

你无法合理地做到这一点 - 原始设备制造商对你撒谎。如果你想要一个解决方法,你可以读取/ proc / mounts并尝试找到sdcard的实际路径,但是/ mnt / sdcard也会出现在那里,并且没有保证的方法来区分真相所有设备。

答案 1 :(得分:0)

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

试试这个,它应该有效。

答案 2 :(得分:-1)

我有Sony Xperia tipo dual和这个:

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

和此:

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

两者都运转正常。 (我用Native做过)