2015-06-05 14 views
5

Il mio codice è:Impossibile aggiungere testo in un file

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

Quando uso myOutWriter.append, ciò che realmente accade è che ogni volta che sto scrivendo al file, sovrascrive il contenuto precedente.

+0

Non c'è: http://developer.android.com/reference/java/io/OutputStreamWriter.html – vicolored

risposta

7

Questo perché non si utilizza l'opzione di aggiunta del costruttore FileOutputStream.

si dovrebbe usare:

FileOutputStream fOut = new FileOutputStream(myfile, true); 

invece, per aprire il file per aggiungere.

In caso contrario, sovrascrive il contenuto del file precedente.

+0

ora funziona. Grazie – vicolored

2

uso secondconstructor di FileOutputStream:

FileOutputStream(String name, boolean append)

con un valore di aggiunta come true

1

Il problema è che il cursore che sta segnando il luogo dove il OutputStreamWriter sta cominciando a scrivere nel file è al molto all'inizio del file.

Quello che si vuole fare è impostarlo alla fine del file usando il costruttore alternativo di FileOutputStream che ha un attributo booleano. Il codice fisso sarebbe:

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