Pregunta No se puede agregar texto al archivo


Mi código es:

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

Cuando uso myOutWriter.append, lo que realmente sucede es que cada vez que escribo en el archivo, sobrescribe el contenido anterior.


5
2018-06-05 07:37


origen


Respuestas:


Eso es porque no usa la opción de agregar de la FileOutputStream constructor.

Deberías usar:

FileOutputStream fOut = new FileOutputStream(myfile, true);

en su lugar, para abrir el archivo para agregar.

De lo contrario, sobrescribe el contenido del archivo anterior.


7
2018-06-05 07:41



use el segundo constructor de FileOutputStream:

FileOutputStream(String name, boolean append)

con agregar valor como true


2
2018-06-05 07:41



El problema es que el cursor que está marcando el lugar donde el OutputStreamWriter está comenzando a escribir en el archivo está al principio del archivo.

Lo que quiere hacer es configurarlo al final del archivo usando el constructor alternativo de FileOutputStream que tiene un atributo booleano. El código fijo sería:

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

1
2018-06-05 07:43