No se puede escribir en la tarjeta SD: canWrite devuelve falso

Perdón por el título ambiguo, pero estoy haciendo lo siguiente para escribir una cadena simple en un archivo:

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

Peroroot.canWrite() parece estar volviendo falso cada vez. No estoy ejecutando esto desde un emulador, tengo mi Android Eris conectado a mi computadora a través de USB y ejecuto la aplicación desde mi teléfono a través de Eclipse. ¿Hay alguna forma de dar permiso a mi aplicación para que esto no suceda?

Además, este código parece ser crear el archivodefault.txt pero ¿qué pasa si ya existe? ¿Ignorará la creación y simplemente la abrirá para escribir o tengo que atrapar algo comoFileAlreadyExists(si existe tal excepción) que luego simplemente la abre y escribe?

Gracias por cualquier ayuda chicos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta