2015-01-07 11 views
8

Mam aplikację, która zapisuje dane do pliku (pamięć wewnętrzna) danych wprowadzanych przez użytkownika i podczas uruchamiania ładuje ten plik i wyświetla jego zawartość. Chciałbym wiedzieć: gdzie mogę znaleźć mój plik (data.txt)? Oprócz tego, jeśli wpisuję "Hello", a następnie "World", gdy ładuję plik widzę "HelloWorld" w tej samej linii, ale chcę "Hello" i "World" wydrukowane w 2 różnych liniach.Plik zapisu lokalizacji Android FileOutputStream

Do zapisywania pliku:

public void writeToFile(String data) { 
    try { 
     FileOutputStream fou = openFileOutput("data.txt", MODE_APPEND); 
     OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fou); 
     outputStreamWriter.write(data); 
     outputStreamWriter.close(); 
    } 
    catch (IOException e) { 
     Log.e("Exception", "File write failed: " + e.toString()); 
    } 
} 

Dla pliku ładowania:

public String readFromFile() { 

    String ret = ""; 

    try { 
     InputStream inputStream = openFileInput("data.txt"); 

     if (inputStream != null) { 
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
      String receiveString = ""; 
      StringBuilder stringBuilder = new StringBuilder(); 

      while ((receiveString = bufferedReader.readLine()) != null) { 
       stringBuilder.append(receiveString); 
      } 

      inputStream.close(); 
      ret = stringBuilder.toString(); 
     } 

    } 
    catch (FileNotFoundException e) { 
     Log.e("login activity", "File not found: " + e.toString()); 
    } catch (IOException e) { 
     Log.e("login activity", "Can not read file: " + e.toString()); 
    } 

    return ret; 
} 

Dzięki

[UPDATE]

mam wstawiony "\ n" po każdym wejściu:

user = (EditText) v.findViewById(R.id.username); 
writeToFile(user.getText().toString() + "\n"); 

Ale kiedy drukowanie mój plik Są zawsze na tej samej linii

+0

jaki sposób można ustawić nową ścieżkę do zapisania pliku ? – xXJohnRamboXx

Odpowiedz

11

gdzie mogę znaleźć mój plik (data.txt)?

Można znaleźć ścieżkę katalogu, który jest tworzony przez który openFileOutput użyciu YourActivity.this.getFilesDir().getAbsolutePath()

ale chcę „Hello” i „Świat”, wydrukowany w 2 różnych linii.

Zastosowanie line.separator po napisaniu wyrazu w pliku jako:

String separator = System.getProperty("line.separator"); 
outputStreamWriter.write(data); 
outputStreamWriter.append(separator); 
... 

Albo można też użyć replaceAll przerwać ciąg w wielu wierszach:

String separator = System.getProperty("line.separator"); 
data=data.replaceAll(" ",separator); 
+0

Moja ścieżka to/data/data/mypackage, ale jeśli tam pójdę puste.może być konieczne, aby moje urządzenie zostało zrootowane, aby je zobaczyć .. String separator = System.getProperty ("line.separator"); nie działa ... słowa są nadal w tej samej linii – xXJohnRamboXx

+0

@xXJohnRamboXx: czy jesteś pewien, że czytając dane z pliku, dodajesz nową linię? –

+1

@xXJohnRamboXx: wypróbuj jako :: stringBuilder.append (receiveString); stringBuilder.append ("\ n"); ' –

3

Chyba można go znaleźć tutaj: data/data/[Twoja nazwa pakietu]/... a dotyczące pisania w dwóch oddzielnych linii tylko dodaj "\ n", gdy chcesz przejść do innej linii.

+0

Moje dane/dane są puste. Właśnie dodałem "\ n" po każdym słowie, ale nic:/ – xXJohnRamboXx

+0

Zaktualizuj swój nowy kod, aby rozwiązać nowy problem z Linuksem –

+0

Jeśli chcesz zapisać dane na sdcardu, raz dokładnie przeczytaj to samouczek: http://chrisrisner.com/31-Days-of-Android--Day-23%E2%80%93Writing-and-Reading-Files –

Powiązane problemy