この次のコード スニペットは、ファイルを正常に作成しているように見え、writeData
関数は適切に書き込みStringWriter
ますが、ファイルは空のようです..
fileOutputStream = new FileOutputStream(selectedFile);
if(!selectedFile.exists())
selectedFile.createNewFile();
StringWriter writer = new StringWriter();
serializer.setOutput(writer);
Log.i(TAG, "- Output is asigned to the special Serializer object");
/* The target data is written to the a string buffer in the StringWriter */
writeData(serializer, templateData);
Log.i(TAG, String.format("- New file Data written: %s", writer.toString())); // Logcat prints the file data from this string beautifully..
fileOutputStream.write(writer.toString().getBytes()); // Not happening?! Why :(
fileOutputStream.close();
文字列は間違いなく空ではありません!
ただし、作成されたファイルは空です。などのバリエーションも試しましOuputStreamWriter
たが、ファイルが書き込まれません。なんで?Nexus 7 タブレットでこれをテストしており、WRITE_EXTERNAL_STORAGE
アクセス許可が設定されています。
更新: このプロセスですべてのファイルが作成されます。ファイルのアクセス権は「_rw」として作成されます。
まったく同じ結果が得られる、私が使用した他の方法:
FileWriter fw = new FileWriter(selectedFile.getPath());
fw.write(writer.toString());
fw.flush();
fw.close();
いずれの場合も、ファイルは createNewFile() によって作成されますが、データは書き込まれません。アプリは何もスローせずに通常どおり続行します。私は理解していません:'(