我的代码是:
if(myfile.exists()) {
try {
FileOutputStream fOut = new FileOutputStream(myfile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
for (LatLng item : markerArrayList) {
myOutWriter.append(item.toString());
}
myOutWriter.append("\n\n");
myOutWriter.close();
fOut.close();
Toast.makeText(getBaseContext(), "Done writing ", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
当我使用myOutWriter.append
时,真正发生的是每次我写入文件时,都会覆盖以前的内容。
答案 0 :(得分:7)
那是因为你没有使用FileOutputStream构造函数的append选项。
您应该使用:
FileOutputStream fOut = new FileOutputStream(myfile, true);
而是打开要追加的文件。
否则,它会覆盖上一个文件的内容。
答案 1 :(得分:2)
使用FileOutputStream的secondconstructor:
FileOutputStream(String name, boolean append)
附加值为true
答案 2 :(得分:1)
问题是标记OutputStreamWriter
开始写入文件的位置的光标位于文件的最开头。
您要做的是使用具有布尔属性的FileOutputStream
的替代构造函数将其设置为文件的末尾。固定代码是:
if(myfile.exists()) {
try {
FileOutputStream fOut = new FileOutputStream(myfile, true);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
for (LatLng item : markerArrayList) {
myOutWriter.append(item.toString());
}
myOutWriter.append("\n\n");
myOutWriter.close();
fOut.close();
Toast.makeText(getBaseContext(), "Done writing ", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
}