Android 无法写入SD卡--canWrite返回false

Android 无法写入SD卡--canWrite返回false,android,file-io,Android,File Io,很抱歉标题不明确,但我正在执行以下操作将简单字符串写入文件: try { File root = Environment.getExternalStorageDirectory(); if (root.canWrite()){ System.out.println("Can write."); File def_file = new File(root, "default.txt"); Fil

很抱歉标题不明确,但我正在执行以下操作将简单字符串写入文件:

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
(如果存在这样的异常)的内容,然后直接打开并写入

谢谢你们的帮助

有没有办法让我的应用程序 这样就不会发生这种事了

您需要
写入外部存储
权限


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

将“写入外部存储”权限添加到清单文件中

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

  • 将机器人插入计算机
  • 拉下经理(顶部的时间栏,抱歉不知道姓名,现在无法回忆)
  • 点击“usb连接”
  • 电脑上会弹出一个窗口,显示SD卡的内容
  • 完成后点击“关闭usb存储”
  • 断开usb电缆(如果您愿意),然后您的Droid可以再次读取SD卡

  • 我从计算机上卸下了手机,但仍然出现错误,我已在AndroidManifest.xml文件中添加了写入外部存储权限,提前感谢。