2014-10-13 32 views
7

oryginalnego kodu i jego pracy zapisywania danych na karcie SDOutputStreamWriter nie dołączy

// 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(); 
     . . . 

A potem zmienił kod, aby dołączyć nowe wartości, jak powinno być zgodnie z tym co trzeba:

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

Problem: nadpisuje plik tekstowy zamiast dołączania. Co mnie ominęło? Dziękujemy za pomoc

Odpowiedz

16

Konstruktor FileOutputStream (plik pliku) zawsze zastępuje plik. Jeśli chcesz dołączyć do pliku, musisz użyć bardziej ogólnego konstruktora FileOutputStream (plik file, boolean append). Jeśli parametr "dopisz" do prawdziwego pliku nie zostanie nadpisany.

+2

dziękuję, że mnie uratowałeś. bym akceptował odpowiedź w tej chwili, kiedy mogę. dzięki jeszcze raz – LadyWinter