J'ai une application qui enregistre dans un fichier (stockage interne) des données entrées par l'utilisateur et au démarrage, il charge ce fichier et affiche le contenu. Je voudrais savoir: où puis-je trouver mon fichier (data.txt
)? De plus, si j'entre "Bonjour" puis "Monde" lorsque je charge le fichier, je vois "BonjourWorld" sur la même ligne mais je veux que "Bonjour" et "Monde" soient imprimés sur deux lignes différentes.
Pour enregistrer le fichier:
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());
}
}
Pour charger le fichier:
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;
}
Merci.
[MISE À JOUR]
J'ai inséré "\ n" après chaque entrée:
user = (EditText) v.findViewById(R.id.username);
writeToFile(user.getText().toString() + "\n");
Mais lorsque j'imprime mon fichier, ils sont toujours sur la même ligne.
Où puis-je trouver mon fichier (data.txt)?
Vous pouvez trouver le chemin du répertoire, qui est créé par openFileOutput
, en utilisant YourActivity.this.getFilesDir().getAbsolutePath()
.
Mais je veux que "Hello" et "World" soient imprimés sur deux lignes différentes.
Utilisation line.separator
après avoir écrit un mot dans un fichier, par exemple:
String separator = System.getProperty("line.separator");
outputStreamWriter.write(data);
outputStreamWriter.append(separator);
...
Ou vous pouvez également utiliser replaceAll
pour diviser String en plusieurs lignes:
String separator = System.getProperty("line.separator");
data=data.replaceAll(" ",separator);
Je suppose que vous pouvez le trouver ici: data/data/[votre nom de package]/... et en ce qui concerne l'écriture sur deux lignes distinctes, ajoutez simplement "\ n" chaque fois que vous devez aller sur une autre ligne.