2015-01-07 15 views
8

Ho un'app che salva in un file (memoria interna) i dati inseriti dall'utente e all'avvio carica questo file e mostra il contenuto. Vorrei sapere: dove posso trovare il mio file (data.txt)? In aggiunta a, se inserisco "Hello" e poi "World" quando carico il file, vedo "HelloWorld" nella stessa riga ma voglio "Hello" e "World" stampati in 2 linee diverse.Android FileOutputStream posizione Salva file

Per il salvataggio del file:

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

Per il caricamento del file:

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

Grazie

[UPDATE]

ho inserito "\ n", dopo ogni ingresso:

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

Ma quando stampo il mio file sono sempre sulla stessa linea

+0

Come posso impostare nuovo percorso per il salvataggio dei file ? – xXJohnRamboXx

risposta

11

dove posso trovare il mio file (data.txt)?

È possibile trovare il percorso della directory che che viene creato utilizzando openFileOutputYourActivity.this.getFilesDir().getAbsolutePath()

ma voglio "Ciao" e "Mondo" stampati in 2 linee differenti.

Usa line.separator dopo aver scritto la parola in file come:

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

Oppure si può anche utilizzare replaceAll per rompere String in più righe:

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

il mio percorso è/data/data/mypackage ma se ci vado c'è vuoto .. forse è necessario che il mio dispositivo sia radicato per vederlo .. Separatore di stringhe = System.getProperty ("line.separator"); non funziona..le parole sono ancora nella stessa riga – xXJohnRamboXx

+0

@xXJohnRamboXx: sei sicuro quando stai leggendo i dati dal file e poi aggiungendo una nuova riga? –

+1

@xXJohnRamboXx: prova come: 'stringBuilder.append (receiveString); stringBuilder.append (" \ n ");' –

3

Credo che si può trovare qui: i dati/data/[il tuo nome del pacchetto]/... e per quanto riguarda la scrittura in due linee separate solo aggiungi "\ n" ogni volta che devi andare su un'altra linea.

+0

i miei dati/dati sono vuoti .. ho appena aggiunto "\ n" dopo ogni parola ma niente:/ – xXJohnRamboXx

+0

Aggiorna il tuo nuovo codice prima di risolvere il problema nuovoLinea –

+0

Se vuoi scrivere i dati nella tua scheda SD, leggi attentamente questo tutorial: http://chrisrisner.com/31-Days-of-Android--Day-23%E2%80%93Writing-and-Reading-Files –