无法写入SD卡 - canWrite返回false

时间:2010-04-12 16:09:28

标签: android file-io

对于模棱两可的标题感到抱歉,但我正在执行以下操作,将简单的字符串写入文件:

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的内容(如果存在这样的例外)然后只是打开并写入?

感谢任何帮助。

2 个答案:

答案 0 :(得分:17)

  

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

您需要WRITE_EXTERNAL_STORAGE权限。

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

答案 1 :(得分:0)

为清单文件添加WRITE_EXTERNAL_STORAGE权限

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

  1. 将机器人插入电脑
  2. 拉下经理(上面的栏有时间,抱歉不知道名字,现在也记不起来)
  3. 点击“usb connected”
  4. 计算机上会弹出
  5. 窗口,显示SD卡的内容
  6. 完成后点击“关闭USB存储”
  7. 断开USB电缆(如果需要),然后您的Droid可以再次读取SD卡