2014-10-13 15 views
7

Codice originale e il suo funzionamento il salvataggio dei dati sulla scheda SDOutputStreamWriter non aggiunge

// Writing data to internal storage 
btnSaveData.setOnClickListener(new View.OnClickListener() { 

@Override 
public void onClick(View v) { 
    if (isSDCardWritable()) { 
     String dataToSave = etData.getText().toString(); 
     try { 
     // SD Card Storage 
     File sdCard = Environment.getExternalStorageDirectory(); 
     File directory = new File(sdCard.getAbsolutePath()+"/MyFiles"); 
     directory.mkdirs(); 
     File file = new File(directory, "text.txt"); 
     FileOutputStream fos = new FileOutputStream(file); 
     OutputStreamWriter osw = new OutputStreamWriter(fos); 

     // write the string to the file 
     osw.write(dataToSave); 
     osw.flush(); 
     osw.close(); 
     . . . 

E poi ho cambiato il codice per aggiungere un nuovo valore come dovrebbe essere secondo quello che mi serve:

  osw.append(dataToSave); 
      osw.flush(); 
      osw.close(); 

Problema: sovrascrive il file di testo anziché aggiungerlo. Cosa mi sono perso? Grazie per l'aiuto

risposta

16

Costruttore FileOutputStream (file di file) sovrascrive sempre il file. Se vuoi aggiungere al file devi usare un costruttore generico FileOutputStream (file file, append booleano). Se si imposta il parametro 'append' su true file non viene sovrascritto.

+2

grazie, che mi ha salvato. accetterò la risposta nel momento in cui posso. grazie ancora – LadyWinter