无法将文本附加到文件

时间:2015-06-05 07:37:43

标签: java android

我的代码是:

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

3 个答案:

答案 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();
    }
}