Jump to content
Bribri54

Ne trouve pas ses fichiers générés

Recommended Posts

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

Share this post


Link to post
Share on other sites

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", [...]

Share this post


Link to post
Share on other sites

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

Edited by Bribri54

Share this post


Link to post
Share on other sites

Utilise plutot ça pour accéder à la carte sd :

Environment.getExternalStorageDirectory().getAbsolutePath();

Ca t'amene a la racine de la sdcard

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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...)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.






×
×
  • Create New...