2015-01-07 13 views
8

Ich habe eine App, die in eine Datei (interner Speicher) Dateneingabe durch den Benutzer speichern und beim Start lädt diese Datei und zeigt den Inhalt. Ich würde es wissen: Wo finde ich meine Datei (data.txt)? Zusätzlich, wenn ich "Hallo" und dann "Welt" eingeben, wenn ich Datei lade, sehe ich "HelloWorld" in der gleichen Zeile, aber ich möchte "Hallo" und "Welt" in 2 verschiedenen Zeilen gedruckt.Android FileOutputStream Speicherort Datei speichern

Zum Speichern der Datei:

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

Zum Laden der Datei:

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

Dank

[UPDATE]

I "\ n" nach jeder Eingabe eingefügt haben:

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

Aber wenn ich drucken meine Datei, die sie immer auf der gleichen Linie sind

+0

Wie kann ich neuen Pfad gesetzt Datei zum Speichern ? – xXJohnRamboXx

Antwort

11

wo finde ich meine Datei (data.txt)?

Sie können Pfad des Verzeichnisses finden, die die von openFileOutputYourActivity.this.getFilesDir().getAbsolutePath() mit erstellt wird

aber ich will „Hallo“ und „Welt“ gedruckt in zwei verschiedenen Linien.

Verwenden line.separator nach in Datei schreibt Wort als:

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

Oder Sie auch replaceAll zu brechen String in mehreren Zeilen verwenden können:

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

mein Pfad ist/data/data/mypackage aber wenn ich dort hin gehe leer..kann es notwendig sein, dass mein Gerät verwurzelt ist, um es zu sehen. String separator = System.getProperty ("line.separator"); funktioniert nicht..Wörter sind immer noch in der gleichen Zeile – xXJohnRamboXx

+0

@xXJohnRamboXx: Sind Sie sicher, wenn Sie Daten aus der Datei lesen und dann eine neue Zeile hinzufügen? –

+1

@xXJohnRamboXx: probiere es als :: 'stringBuilder.append (receiveString); stringBuilder.append (" \ n ");' –

3

Ich denke, Sie es hier finden: Daten/data/[Ihr Paket Name]/... und in zwei getrennte Linien in Bezug auf Schreiben nur fügen Sie "\ n" hinzu, wann immer Sie zu einer anderen Zeile wechseln müssen.

+0

meine Daten/Daten sind leer..Ich habe gerade "\ n" nach jedem Wort aber nichts hinzugefügt:/ – xXJohnRamboXx

+0

Aktualisiere deinen neuen Code zuerst, um das newLine Problem zu lösen –

+0

Wenn du Daten in deine SD Karte schreiben willst, dann lies dies genau durch Tutorial: http://chrisrisner.com/31-Days-of-Android--Day-23%E2%80%93Writing-and-Reading-Files –

Verwandte Themen