Использование FileWriter для записи в текстовый файл на SD-карте в Android - PullRequest
1 голос
/ 25 ноября 2011

Я исследовал эту проблему некоторое время и нашел только очень сложные ответы, так что я очень запутался. Имейте в виду, что я не опытный программист, поэтому не ждите, что я об этом узнаю!

Все, что я хочу сделать, это напечатать новую строку символов в текстовый файл, расположенный в папке загрузок на SD-карте в Android. Я настроил свой эмулятор на SD-карту и поместил текстовый файл в папку загрузок. Этот фрагмент кода предназначен для класса базы данных, который получит доступ к текстовому файлу на SD-карте для чтения данных. Я знаю, что класс работает вне Android, поэтому предположим, что все методы работают так, как они должны читать данные!

Я получаю IOException, когда запускаю этот метод в другом классе:

public void addRecordToDataBase(ChildRecord c) throws IOException
{
    FileWriter outFile = new FileWriter("/mnt/sdcard/download/database.txt");
    PrintWriter out = new PrintWriter(outFile);
    out.println(c.printToDataBase());
    out.close();
}

Странно то, что я могу прекрасно читать из базы данных другими методами, используя тот же путь; нет проблем там. Я просто не могу написать ему. Я где-то читал, что вы можете использовать «обычные методы Java» для записи на SD-карту в Android без повсеместных безумных вещей «OutputStream». Это правда? Я отладил эту вещь и обнаружил, что строка кода, которая вызывает исключение, находится прямо здесь:

FileWriter outFile = new FileWriter("/mnt/sdcard/download/database.txt");

Если кто-нибудь знает, почему я получаю это IOException, я был бы очень благодарен! Я попробовал все сумасшедшие методы, которые хочет использовать Android, но я думаю, что потерял в этом, поэтому я просто вернулся к тому, что я знал, как сделать.

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

Вы объявили WRITE_EXTERNAL_PERMISSION разрешение в файле манифеста приложения?

1 голос
/ 25 ноября 2011

Полагаю, вы не можете получить доступ к такому каталогу с разрешениями на запись, по крайней мере, таким образом.

Вы смотрели на http://developer.android.com/guide/topics/data/data-storage.html#filesExternal?

Эта ссылка и эта (http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)), объяснение того, как работает getExternalFilesDir, может вам помочь!

...