Использование «FileWriter» для записи в текстовый файл на SD-карту в Android

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

Все, что я хочу сделать, это напечатать новую строку символов в текстовый файл, расположенный в папке загрузок на 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, но я думаю, что потерялся в них, поэтому я просто вернулся к тому, что знал, как делать.

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


person Thanizer    schedule 25.11.2011    source источник


Ответы (2)


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

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

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

person jcxavier    schedule 25.11.2011
comment
Я взглянул на это, и это начало иметь немного больше смысла. В чем разница между getExternalFilesDir() и тем, что было у меня? Разве getExternalFilesDir() не получает путь к внешнему диску? Я убедился, что мой код действительно обращается к внешнему диску (SD-карте. Я также должен уточнить, что это не должно работать на КАЖДОМ телефоне, а только на конкретном телефоне). - person Thanizer; 26.11.2011

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

person cottonBallPaws    schedule 25.11.2011