Не может записать в SD-карту — canWrite, возвращает false

Извините за неоднозначный заголовок, но я делаю следующее для записи простой строки в файл:

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(если такое исключение существует), который затем просто открывает его и записи?

Спасибо за любых парней справки.

11
задан Fizz 12 April 2010 в 16:09
поделиться

1 ответ

Есть ли способ предоставить моему приложению разрешение, чтобы этого не произошло?

Вам понадобится WRITE_EXTERNAL_STORAGE разрешение.

Вам также необходимо, чтобы SD-карта не была установлена ​​на вашем компьютере для разработки - компьютер или телефон могут получить доступ к SD-карте, но не оба одновременно.

17
ответ дан 3 December 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: