【问题标题】:Cannot write to SD card -- canWrite is returning false无法写入 SD 卡 - canWrite 返回 false
【发布时间】:2010-04-12 16:09:28
【问题描述】:

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

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。我不是在模拟器上运行它,而是通过 USB 将我的 android Eris 插入我的计算机并通过 Eclipse 从我的手机上运行该应用程序。有没有办法授予我的应用权限,以免发生这种情况?

另外,这段代码似乎是创建文件default.txt,但如果它已经存在,它会忽略创建并打开它来写入还是我必须捕获FileAlreadyExists之类的东西(如果这样的异常存在)然后打开它并写入?

感谢大家的帮助。

【问题讨论】:

    标签: android file-io


    【解决方案1】:

    有没有办法给我的应用程序 许可,这样就不会发生这种情况?

    您需要WRITE_EXTERNAL_STORAGE 权限。

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

    【讨论】:

    • 我从电脑上拔下手机,但还是报错,我已经在AndroidManifest.xml文件中添加了WRITE_EXTERNAL_STORAGE权限,提前谢谢。
    【解决方案2】:

    向您的清单文件添加 WRITE_EXTERNAL_STORAGE 权限

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-30
      • 2015-10-09
      • 2018-04-11
      • 1970-01-01
      • 2017-07-09
      • 2012-07-16
      • 1970-01-01
      相关资源
      最近更新 更多