Android FileOutputStream Speicherort, Datei speichern
Habe ich eine app, die speichert in eine Datei (interner Speicher) werden Daten vom Benutzer eingegeben und beim Start lädt er die Datei und zeigt den Inhalt. Ich würde gerne wissen: wo finde ich meine Datei (data.txt
)?
Außerdem, wenn ich die Eingabe "Hallo" und dann "Welt", wenn ich die Datei laden, ich sehe "HelloWorld" in der gleichen Zeile, aber ich möchte "Hallo" und "Welt" gedruckt auf zwei verschiedenen Linien.
Für das 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());
}
}
Für die be-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]
Habe ich eingefügt, "\n" nach jeder Eingabe:
user = (EditText) v.findViewById(R.id.username);
writeToFile(user.getText().toString() + "\n");
Aber wenn ich meine drucken Datei, sind Sie immer auf der gleichen Linie.
- wie kann ich einstellen, dass neue Pfad zum speichern der Datei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie den Pfad des Verzeichnisses, das erstellt wird, indem
openFileOutput
durch die VerwendungYourActivity.this.getFilesDir().getAbsolutePath()
.Verwenden
line.separator
nach dem schreiben ein Wort in eine Datei, zum Beispiel:Oder Sie können auch
replaceAll
zu brechen String in mehrere Zeilen:stringBuilder.append(receiveString);stringBuilder.append("\n");
Ich denke, man kann es hier finden: data/data/[Ihr Paketname]/... und über das schreiben in zwei separaten Zeilen, fügen Sie einfach "\n", Wann immer Sie brauchen, um zu gehen zu einer anderen Linie.