forum FrAndroid

Aller au contenu

Change

hitech regie

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


  • Vous ne pouvez pas répondre à ce sujet
11 réponses à ce sujet

#1
Bribri54

Bribri54

    Newbie

  • Membres
  • 9 messages
  • Modèle:ACER A500
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

#2
Sylvain-a

Sylvain-a

    Membre régulier

  • Membres
  • 137 messages
peut être qu'il faudrait que tu rajoutes un chemin ^^ (pour maitriser l'endroit ou ça va se créer :)).

#3
Bribri54

Bribri54

    Newbie

  • Membres
  • 9 messages
  • Modèle:ACER A500
Merci de ta réponse. Où je place le code et comment? Avant le FileOutputStream?

Merci!

#4
Sylvain-a

Sylvain-a

    Membre régulier

  • Membres
  • 137 messages
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", [...]

#5
Bribri54

Bribri54

    Newbie

  • Membres
  • 9 messages
  • Modèle:ACER A500
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, 29 January 2012 - 15:00.


#6
Sylvain-a

Sylvain-a

    Membre régulier

  • Membres
  • 137 messages
Utilise plutot ça pour accéder à la carte sd :
Environment.getExternalStorageDirectory().getAbsolutePath();
Ca t'amene a la racine de la sdcard

#7
Bribri54

Bribri54

    Newbie

  • Membres
  • 9 messages
  • Modèle:ACER A500
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

#8
chpil

chpil

    RdS Développement

  • Responsables de section
  • 570 messages
  • LieuRennes
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);

ZTE Link - ZTE Blade

#9
Bribri54

Bribri54

    Newbie

  • Membres
  • 9 messages
  • Modèle:ACER A500
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();
}
}


#10
Bribri54

Bribri54

    Newbie

  • Membres
  • 9 messages
  • Modèle:ACER A500
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

#11
chpil

chpil

    RdS Développement

  • Responsables de section
  • 570 messages
  • LieuRennes
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...)
ZTE Link - ZTE Blade

#12
Bribri54

Bribri54

    Newbie

  • Membres
  • 9 messages
  • Modèle:ACER A500
Ok merci chpil pour l'info! Je vais essayer de me renseigner sur ce problème.