2015-06-05 32 views
5

Mój kod to:Nie można dołączyć tekst do pliku

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

Gdy używam myOutWriter.append, co naprawdę się dzieje, że za każdym razem piszę do pliku, to nadpisuje poprzednią zawartość.

+0

Nie ma: http://developer.android.com/reference/java/io/OutputStreamWriter.html – vicolored

Odpowiedz

7

Dzieje się tak dlatego, że nie używa się opcji dołączania do konstruktora FileOutputStream.

Należy użyć:

FileOutputStream fOut = new FileOutputStream(myfile, true); 

zamiast otworzyć plik do dopisywania.

W przeciwnym razie zastępuje zawartość poprzedniego pliku.

+0

działa teraz. Dzięki – vicolored

2

użycie FileOutputStream za secondconstructor:

FileOutputStream(String name, boolean append)

o wartości dopisywania jak true

1

Problemem jest to, że kursor, który jest oznaczenie miejsca, w którym OutputStreamWriter zaczyna pisać do pliku jest co bardzo początek pliku.

To, co chcesz zrobić, to ustawić go na końcu pliku, używając alternatywnego konstruktora o wartości FileOutputStream, który ma atrybut boolowski. Stała kod byłoby:

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(); 
    } 
} 
Powiązane problemy