Aller au contenu

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

Lien vers le commentaire
Partager sur d’autres 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", [...]

Lien vers le commentaire
Partager sur d’autres 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

Modifié par Bribri54
Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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);

Lien vers le commentaire
Partager sur d’autres 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();
}
}

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

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

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...