Não é possível gravar no cartão SD - o canWrite está retornando false

Desculpe pelo título ambíguo, mas estou fazendo o seguinte para escrever uma sequência simples em um arquivo:

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();
}

Masroot.canWrite() parece estar retornando sempre falso. Não estou executando isso em um emulador, tenho meu Android Eris conectado ao meu computador via USB e executando o aplicativo no meu telefone via Eclipse. Existe uma maneira de dar permissão ao meu aplicativo para que isso não aconteça?

Além disso, esse código parece criar o arquivodefault.txt mas e se ele já existir, ele ignorará a criação e apenas a abrirá para escrever ou eu tenho que pegar algo comoFileAlreadyExists(se existir uma exceção), que apenas a abre e grava?

Obrigado por qualquer ajuda pessoal.