Bribri54 Posté(e) 23 janvier 2012 Share Posté(e) 23 janvier 2012 bonjour, j'utilise FileOutputStream pour généré un fichier test.csv depuis mon application. Lorsque je lance l'application depuis l'émulateur je vois bien le fichier qui se crée dans data/data/com.monapplication/ Mais pas dans le mnt/sdcard. Quand j'éxécute mon appli sur ma tablette (Acer A500) le fichier se crée (je le sais via un toast), mais impoosible de savoir où. J'ai bien pensé dans sdcard/Android/data mais je n'ai pas de dossier com.mon application. J'ai bien la permission :WRITE_EXTERNAL_STORAGE dans mon Manifest. Voici mon code : public void ecrirefich2(){ try { FileOutputStream fos = monapplicationlActivity.this.openFileOutput("test.csv", Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE); OutputStreamWriter writer = new OutputStreamWriter(fos); StringBuilder buffer = new StringBuilder(); String idPers = "ggg"; String nomPers = "iiii"; String prenomPers = "ttt"; String agePers = "125"; buffer.append(idPers); buffer.append(';'); buffer.append(nomPers); buffer.append(';'); buffer.append(prenomPers); buffer.append(';'); buffer.append(agePers); buffer.append("\n"); writer.write(buffer.toString()); writer.close(); fos.close(); Toast.makeText(monapplication.this, "Fichier généré avec succès", Toast.LENGTH_LONG).show(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } Merci si vous avez une idée,! Bribri Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sylvain-a Posté(e) 23 janvier 2012 Share Posté(e) 23 janvier 2012 peut être qu'il faudrait que tu rajoutes un chemin ^^ (pour maitriser l'endroit ou ça va se créer :)). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bribri54 Posté(e) 25 janvier 2012 Auteur Share Posté(e) 25 janvier 2012 Merci de ta réponse. Où je place le code et comment? Avant le FileOutputStream? Merci! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sylvain-a Posté(e) 25 janvier 2012 Share Posté(e) 25 janvier 2012 cette question m'en fait poser une autre... sais tu vraiment ce que tu fais, ou a tu juste copié le code sur un tuto ou autre sans réellement comprendre ? (attention, je ne critique pas, je demande :)) et le chemin... c'est quand tu ouvres le fichier : [...]openFileOutput("tonchemin/test.csv", [...] Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bribri54 Posté(e) 29 janvier 2012 Auteur Share Posté(e) 29 janvier 2012 (modifié) J'ai bien copié le code d'un tuto. Je débute mais je comprend ce que je fais, mais il arrive parfois que je bloque sur certains trucs. Merci pour la réponse j'essaye de suite. Alors voilà, j'ai modifé le chemin mais le problème c'est que ça fait planter l'appli. Dans le Logcat j'ai ce message d'erreur: E/AndroidRuntime(5133): java.lang.IllegalArgumentException: File /sdcard/test.csv contains a path separator donc j'ai modifié mes "/" slach de façon à avoir ça : openFileOutput(File.pathSeparator +"sdcard" + File.pathSeparator + "test.csv", Mais le problème c'est que ça ne génère touours pas le fichier dans le sdcard. Merci de votre aide Modifié 29 janvier 2012 par Bribri54 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sylvain-a Posté(e) 29 janvier 2012 Share Posté(e) 29 janvier 2012 Utilise plutot ça pour accéder à la carte sd : Environment.getExternalStorageDirectory().getAbsolutePath(); Ca t'amene a la racine de la sdcard Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bribri54 Posté(e) 29 janvier 2012 Auteur Share Posté(e) 29 janvier 2012 Ok merci, j'avance un peu. J'ai toujours ce message d'erreur dans mon Logcat : 01-29 15:54:55.212: E/AndroidRuntime(2897): java.lang.IllegalArgumentException: File /mnt/sdcard/test.csv contains a path separator Voi ci mon code : openFileOutput(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "test.csv", Merci de ton aide Sylvain-a Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 30 janvier 2012 Share Posté(e) 30 janvier 2012 La méthode openFileOutput ne permet d'accéder qu'à un fichier privé à l'application (ie un fichier situé dans l'espace de stockage interne du téléphone, dans une partie réservée à l'application). Si tu veux écrire ton fichier sur la carte SD (mémoire externe), il faut utiliser une autre méthode. Regarde la doc (différence entre Internal Storage et External Storage) pour plus de détails. Dans ton cas, pour écrire ton fichier sur la carte, il faut que tu fasses quelque chose du genre: File f = new File(Environment.getExternalStorageDirectory(), "test.csv"); OutputStream os = new FileOutputStream(f); Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bribri54 Posté(e) 3 février 2012 Auteur Share Posté(e) 3 février 2012 Merci à vous pour vos réponses, ça avance! J'arrive maintenant à généré un fichier avec la seconde méthode. J'arrive également à lire le fichier depuis ASTRO dans un éditeur de texte. Il est bien présent dans le dossier que je choisi. Mais (parce qu'il y a un mais), lorsque que je branche ma tablette acer à mon ordinateur je ne vois pas le fichier.... étrange isn't it? A partir du moment où je renome le fichier sous astro, le fichier apparait dans mon explorateur windows de mon pc... Comme s'il y avait un rafraichissement,? Est-ce spécifique à la tablette A500? Avec vous des pistes? Mon code: File f = new File("/sdcard/" + save_folder); if (!f.exists()) { f.mkdir(); } File file = new File(Environment.getExternalStorageDirectory() + File.separator + save_folder, "opla.csv"); try { file.createNewFile(); FileWriter filewriter = new FileWriter(file,true); StringBuilder buffer = new StringBuilder(); buffer.append(op_name); buffer.append(';'); buffer.append(op_topdeb); buffer.append(';'); buffer.append(op_typeop); buffer.append(';'); buffer.append(temps); buffer.append("\n"); filewriter.write(buffer.toString()); /**filewriter.append("\n");*/ filewriter.close(); file.setReadable(true); Toast.makeText(Monappli.this, "Fichier généré avec succès à l'emplacement suivant : " + Environment.getExternalStorageDirectory().getPath() + File.separator + save_folder, Toast.LENGTH_LONG).show(); } catch (Exception e) { Toast.makeText(Monappli.this, "Erreur lors de la génération du fichier", Toast.LENGTH_LONG).show(); } } Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bribri54 Posté(e) 18 février 2012 Auteur Share Posté(e) 18 février 2012 Re-Bonjour à tous, J'ai toujours ce problème de visibilité via mon explorateur de mon ordinateur. Avez vous des idées? car là je patauge.... Merci, Bribri Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 20 février 2012 Share Posté(e) 20 février 2012 Il semble que la tablette Acer A500 utilise le protocole MTP pour le montage de sa SD sur un PC. MTP permet le partage entre le device et le PC (la carte reste visible sur le device même lorsqu'elle est "montée" sur le PC, au contraire du protocole UMS classique qui fait que la carte est soit montée dans le device, soit montée sur le PC) Peut-être que ton problème vient de ce protocole ? Perso, je n'ai jamais rencontré ton problème (et pour cause, mes androphones sont UMS...) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bribri54 Posté(e) 25 février 2012 Auteur Share Posté(e) 25 février 2012 Ok merci chpil pour l'info! Je vais essayer de me renseigner sur ce problème. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.