IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Problème pour l'écriture de fichier en interne


Sujet :

Android

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Problème pour l'écriture de fichier en interne
    Bonjour !

    J'expérimente en tâtonnant les fonctions d'écriture de fichier : j'ai une activité toute simple comportant un bouton et je voudrais que, lorsque l'utilisateur clique sur ledit bouton, un fichier appelé "Nom du fichier à créer" se crée, avec pour contenu "Contenu du fichier à créer" (admirez l'originalité… ).

    J'ai écrit le code que voici :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.app.ActionBar;
    import android.support.v4.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.os.Build;
    import android.app.Activity;
    import android.widget.Button;
    import android.widget.TextView;
    import android.view.View.OnClickListener;
    import android.print.*;
     
    public class MainActivity extends Activity {
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.fragment_main);
     
    		Button bCreation = (Button) findViewById(R.id.creation);
    		bCreation.setOnClickListener(creation_dun_fichier);
     
    	}
     
    	View.OnClickListener creation_dun_fichier = new View.OnClickListener() {
    		@Override
    		public void onClick(View v) {
    			String NomDuFluxDuFichierACreer = "Nom du flux du fichier à créer";
    			String NomDuFichierACreer = "Nom du fichier à créer";
    			String ContenuDuFichierACreer = "Contenu du fichier à créer";
    			File FichierACreer = new  File(NomDuFichierACreer);
    			try {
    				FichierACreer.createNewFile();
    			}
    			catch (Exception e) {
    				System.out.println("Impossible de créer le fichier");
    			}
    			try {
    				FileOutputStream FluxDuFichierACreer = new FileOutputStream(FichierACreer);
    				try {
    					FluxDuFichierACreer.write(ContenuDuFichierACreer.getBytes());
    				}
    				catch (Exception g) {
    					System.out.println("Impossible d'écrire dans le fichier");
    				}
    				FluxDuFichierACreer.close();
    			}
    			catch (FileNotFoundException f) {
    				System.out.println("Impossible de trouver le fichier");
    			}
    			catch (Exception g) {
    				System.out.println("Impossible de fermer le flux");
    			}
     
    		}
    	};
     
     
    }
    … avec sur mon fichier xml un bouton appelé creation.

    Lorsque je fais Run, j'obtiens ceci :

    05-31 12:40:02.333: I/System.out(1469): Impossible de créer le fichier
    05-31 12:40:02.333: I/System.out(1469): Impossible de trouver le fichier

    … donc j'en déduis que mes exceptions ont travaillé et que ça n'a pas marché :'(

    Quelqu'un pour m'expliquer pourquoi ?

    Merci d'avance pour votre aide !

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    C'est l’utilisation de la méthode openFileOutput qui est primordial. Or je ne la voit pas dans ton code...
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup de me l'avoir signalé. J'ai revu mon code en y intégrant cette méthode… tout de suite ça marche beaucoup mieux !

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Attention... pour la 8721378723 fois

    createNewFile() ne fait pas ce qu'on croit.... La fonction ne fait que s'assurer de manière "atomique" que le fichier vient d'être créé par l'appelant de la fonction (elle retourne vrai seulement si le fichier n'existait pas avant l'appel de la fonction). Très utile pour des fichiers cache absolument inutile dans le cas de la création d'un fichier dont le nom est prédéfini ... D'ailleurs ne pas tester la valeur de retour est un signe que l'appel est inutile.

    Quant aux exceptions préférer des logs par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    catch (Exception ex) { Log.e(TAG,"Impossible de créer le fichier",ex); }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Log.i(TAG,"Fichier créé !");
    Plutôt que System.out
    (et disparition de l'exception au passage).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 84
    Dernier message: 04/09/2009, 09h07
  2. Réponses: 4
    Dernier message: 18/01/2008, 21h48
  3. [Lazarus] Problème pour l'utilisation des fichiers
    Par Lulu_n10 dans le forum Lazarus
    Réponses: 7
    Dernier message: 30/03/2007, 16h54
  4. Réponses: 2
    Dernier message: 07/11/2006, 22h42
  5. Probléme pour ecrire dans un fichier
    Par julien1981 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 27/06/2006, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo