Java 无法将文本追加到文件

Java 无法将文本追加到文件,java,android,Java,Android,我的代码是: if(myfile.exists()) { try { FileOutputStream fOut = new FileOutputStream(myfile); OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); for (LatLng item : markerArrayList) { myOutWriter.append(

我的代码是:

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时,实际发生的情况是每次我写入文件时,它都会覆盖以前的内容。

这是因为您没有使用构造函数的append选项

你应使用:

FileOutputStream fOut = new FileOutputStream(myfile, true);
而是打开文件进行附加


否则,它将覆盖上一个文件的内容。

使用FileOutputStream的第二个构造函数:

FileOutputStream(字符串名,布尔追加)


将append value设置为
true

时,问题在于标记
OutputStreamWriter
开始写入文件的位置的光标位于文件的最开头

您要做的是使用具有布尔属性的替代构造函数将其设置为文件的结尾。固定代码为:

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();
    }
}
没有: