Bonjour,
Pour mon application, j'ai besoin de stocker des données dans un fichier, afin de les transmettre en pièce jointe par mail. Etant plutot débutant, je fais des proto pour avancer pas à pas. Et je bute déjà sur la première étape consistant à stocker une chaîne de caractères dans un fichier, et ensuite l'ouvrir à nouveau pour lire et afficher son contenu. Ecriture et lecture dans deux activités différentes, tant qu'à faire. J'ai choisis à priori de créer le fichier dans le stockage interne, sachant qu'ensuite j'aurai à résoudre le problème de le rendre accessible à une autre application pour l'envoi par mail, mais celà me semble quand même être la meilleure solution car ces fichiers n'ont pas vocation à être utilisé ensuite sur le smartphone comme peut l'être une photo par exemple. J'ai prévu de les effacer une fois le mail envoyé.
J'ai récupéré un code plusieurs fois qualifié de OK par leur utilisateur. Or chez moi il ne marche pas, malgré moultes essais. Le code qui cré le fichier dans la 1ère activité :
Cette partie fonctionne car j'ai le bon message dans le log.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public void creFichier(Context c) { String mot = "Hello world, this is crazy"; FileOutputStream fos = null; OutputStreamWriter outStream = null; try { fos = c.openFileOutput("test.txt", c.MODE_PRIVATE); outStream = new OutputStreamWriter(fos); outStream.write(mot); outStream.close(); Log.d("Control", "write ok"); } catch (IOException e) { Log.d("Control", "write ko"); Log.e("Controller", e.getMessage() + e.getLocalizedMessage() + e.getCause()); } }
Maintenant la lecture :
tFic étant un textView dans mon layout d'activité... Et là, j'ai le message dans le log exprimant clairement que le "try" est parti en erreur, à priori dès l'ouverture du fichier. (getMessage(), getLocalizedMessage() et getCause() renvoient null tous les trois)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 String filename, read; final Context c = this.context; read = " "; filename = "test.txt"; try { InputStream fis = c.openFileInput(filename); if (fis != null) { InputStreamReader inputStream = new InputStreamReader(fis); tFic.setText("Coucou"); BufferedReader buffRead = new BufferedReader(inputStream); String receivStr = ""; StringBuilder stringB = new StringBuilder(); while ((receivStr = buffRead.readLine()) != null) { stringB.append(receivStr); } read = stringB.toString(); } fis.close(); tFic.setText(read); } catch (Throwable t) { Log.d(MAIL_TAG, "Erreur IO"); Log.e(MAIL_TAG, t.getMessage() + t.getLocalizedMessage() + t.getCause()); }
J'ai tenté par exemple de renseigner le nom du fichier avec, mais c'est pareil.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MailActivity.this.getFilesDir().getAbsolutePath()+"/test.txt"
Je n'ai plus de pistes de recherche...
Quelqu'un a-t-il une idée de ce qui se passe ?
Merci d'avance
Partager