Динамическое обновление текстового файла в Android

Я пытаюсь динамически писать в текстовый файл. Я могу создать и записать в файл 1 строку. После этого я хочу написать вторую строчку. В моем коде ниже я проверяю, существует ли файл. Если он уже существует, я пишу в файл, не создавая новый (см. код ниже). Однако я получаю эту ошибку всякий раз, когда пытаюсь написать во второй раз.

Ошибка:

.IllegalArgumentException: File //sdcard//uiu_error_report.txt contains a path separator

Код:

String filename = "/sdcard/uiu_error_report.txt";

File myFile = new File(filename);

if (myFile.createNewFile()) {

  FileOutputStream fOut = new FileOutputStream(myFile);
  OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
  myOutWriter.append("[" + dateFormatted + "," + module2 + "," + type2 + "," + message2 + "]");
  myOutWriter.close();
  fOut.close();

} else {

    try {
      OutputStreamWriter out = new OutputStreamWriter(context.openFileOutput(filename,countFileRows()+1));
      // write the contents on mySettings to the file
      out.write("[" + dateFormatted + "," + module2 + "," + type2 + "," + message2 + "]");
      // close the file
      out.close();

    // Do something if an IOException occurs.
    } catch (java.io.IOException e) {

    }
}

person user182192    schedule 15.08.2012    source источник
comment
Возможно, вы увидите это: stackoverflow.com /вопросы/5963535/   -  person Alexis C.    schedule 15.08.2012


Ответы (1)


Лучший способ сделать это....

try {
    FileOutputStream fos = context.openFileOutput(filename, Context.MODE_APPEND | Context.MODE_WORLD_READABLE);
    OutputStreamWriter myOutWriter = new OutputStreamWriter(fos);
    myOutWriter.append("[" + dateFormatted + "," + module2 + "," + type2 + "," + message2 + "]"+"/n");
    // myOutWriter.close();

    myOutWriter.close();
} catch (Exception e) {
    e.printStackTrace();
}
person user182192    schedule 15.08.2012
comment
Перехватывать Exception не рекомендуется. Вы должны скорее ловить конкретные ошибки. - person Zorayr; 12.06.2013