无法写入SD卡 – canWrite返回false

很抱歉这个含糊不清的标题,但我正在做以下操作,将一个简单的字符串写入文件:

try { File root = Environment.getExternalStorageDirectory(); if (root.canWrite()){ System.out.println("Can write."); File def_file = new File(root, "default.txt"); FileWriter fw = new FileWriter(def_file); BufferedWriter out = new BufferedWriter(fw); String defbuf = "default"; out.write(defbuf); out.flush(); out.close(); } else System.out.println("Can't write."); }catch (IOException e) { e.printStackTrace(); } 

root.canWrite()似乎每次都返回false。 我没有在模拟器上运行它,我将我的android Eris通过USB插入我的计算机并通过Eclipse从我的手机上运行应用程序。 有没有办法给我的应用程序权限,所以这不会发生?

此外,这段代码似乎是创建文件default.txt但如果它已经存在,它会忽略创建并只是打开它来写或者我必须捕获类似FileAlreadyExists (如果存在这样的exception)然后只是打开它并写道?

谢谢你的帮助。

有没有办法给我的应用程序权限,所以这不会发生?

您需要WRITE_EXTERNAL_STORAGE权限。

您还需要在开发计算机上不安装SD卡 – 计算机或手机可以访问SD卡,但不能同时访问两者。

为清单文件添加WRITE_EXTERNAL_STORAGE权限

如果有必要,请执行以下操作

  1. 将机器人插入您的计算机
  2. 拉下经理(上面的酒吧有时间,抱歉不知道名字,现在不能回忆)
  3. 打“usb connected”
  4. 在您的计算机上popup一个窗口,显示SD卡的内容
  5. 完成后点击“关闭USB存储”
  6. 断开USB电缆(如果你想),然后你的Droid可以再次读取SD卡