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