0

txt ファイルに動的に書き込もうとしています。ファイルを1行作成して書き込むことができます。その後、2行目を書きたいと思います。以下のコードでは、ファイルが存在するかどうかを確認します。既に存在する場合は、新しいファイルを作成せずにファイルに書き込みます (以下のコードを参照)。ただし、2 回目に書き込もうとすると、このエラーが発生します。

エラー:

.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) {

    }
}
4

1 に答える 1

0

これを行うより良い方法....

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();
}
于 2012-08-15T15:13:59.623 に答える