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

AWT/Swing Java Discussion :

[JFileChooser]sauvegarder:mettre automatiquement l'extension


Sujet :

AWT/Swing Java

  1. #1
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Points : 203
    Points
    203
    Par défaut [JFileChooser]sauvegarder:mettre automatiquement l'extension
    Bonjour,
    J'ai un probleme avec un JFileChooser.
    Je crée une fenetre pour parcourir le disque: je laisse à l'utilisateur seulement la possibilité de choisir des fichiers .txt. ça fonctionne bien.
    Mon probleme c'est pour la fenetre de sauvegarde. L'utilisateur entre le nom de son fichier à enregistrer. Et j'aimerai qu'il n'est pas besoin de rentrer l'extension .txt, je voudrai que ça se fasse automatiquement.
    Dans Fichiers du type, j'ai bien fichier texte. Mais l'extension n'est pas associée au nom du fichier.


    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
     
    //quand on appuie sur le bouton sauvegarder
    public void actionPerformed(ActionEvent e) {
    		fc = new JFileChooser();
    		fc.addChoosableFileFilter(accord);
    //accord est de type AccepterExtension
    //qui est une classe étendant FileFilter
    //AccepterExtension est adaptée d'une classe prise sur un tutoriel de devellopez.com
    //accord accepte les fichiers .txt
    		int returnVal = fc.showSaveDialog(fenetre); 
    		if (returnVal == JFileChooser.APPROVE_OPTION) { 
    			File file = fc.getSelectedFile(); 
    			String filename = file.getName();
                            //je récupère le nom entré par l'utilisateur
                            //j'aimerai ajouter automatiquement l'extension .txt
                            //mais la ligne qui suit ne sert à rien, ça ne marche pas
    			filename = filename+".txt";
    			String path = file.getPath();
    			File file2 = new File(path);
    			String contenu = zone_texte2.getText();
     
    		    try{  
    		    	EcrireFichier fichierInter = new EcrireFichier(file2);
    		    	fichierInter.ecrireFichierInter(contenu);
    		    	fichierInter.fermer();
    		    }
    ...
    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 304
    Points : 348
    Points
    348
    Par défaut
    Ca devrait marcher pourtant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filename = filename + ".txt";
    essaie alors :

    --Miss Gaëlle--

  3. #3
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Citation Envoyé par Miss Gaelle
    Un nouvel opérateur est apparu ? +=

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 304
    Points : 348
    Points
    348
    Par défaut
    bin ... euh ...
    ça arrive
    --Miss Gaëlle--

  5. #5
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Points : 203
    Points
    203
    Par défaut
    slt,
    deja merci d'avoir répondu. j'ai testé avec += mais ça me fait la meme chose qu'avec ce que j'avais écrit. Quand je fais un println, ça écrit bien dans les 2 cas: monfichier.txt. Mais cette modification n'est pas prise en compte car quand je regarde sur le disque dur, j'ai le fichier avec le nom: monfichier
    Il n'y a pas d'extension associée. Donc l'utilisateur doit faire ouvrir avec wordpad par exemple. C'est pas dramatique en soi mais j'aurais voulu qu'en double cliquant sur le fichier, wordpad ou autre se lance direct car il aurait reconnu l'extension .txt

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 304
    Points : 348
    Points
    348
    Par défaut
    ça ne serait pas, par hazard, juste que les extensions de tes fichiers sont masqués? J'en doute, mais on ne sait jamais.
    --Miss Gaëlle--

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Essai ceci :

    filename = filename.concat(".txt");

    A plus.

  8. #8
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Points : 203
    Points
    203
    Par défaut
    non, non, ce n'est pas ça

    Mon problème est pas trop grave en soi car soit l'utilisateur entre le nom du fichier avec l'extension soit quand il ouvrira le fichier, il choisira le programme adapté. Mais bon, c'était pour faire comme les vrais boite de sauvegarde. Dans les vrais, il y a deja l'extension écrite dans nom du fichier. Si jamais l'utilisateur l'efface, elle est quand meme mise au bout du nom du fichier. C'est automatique et c'est ce que j'aurai voulu aussi avoir.
    Merci quand meme de m'avoir aider.

  9. #9
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Points : 203
    Points
    203
    Par défaut
    je viens de voir ta réponse vince. J'ai essayé mais c'est tjs pareil. Avec un println, ça affiche bien nomfichier.txt. Mais pas sur le disque dur.
    Merci

  10. #10
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    C'est normal, tu modifies filename mais ce n'est pas cette variable que tu utilises pour instancier ton File (c'est path)...

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Oui herve a raison c'est file2!!!!

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 304
    Points : 348
    Points
    348
    Par défaut
    ah bah oui, c'est bien path, j'avais pas vu ...
    Hervé, peu d'interventions mais efficaces
    --Miss Gaëlle--

  13. #13
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Points : 203
    Points
    203
    Par défaut
    ouais je suis d'accord avec toi herve. Au départ, je mettais le filename en parametre de ecrire fichier. Mais en fait, pr que mon fichier se mette dans le repertoire que je veux, il faut que je passe un File à FileOutputStream, le File ayant été crée avec le constructeur qui prend le path. Donc c'est vrai qu'ici, le filename n'est pas utilisé en parametre

  14. #14
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    dslé je voulais dire path (encore la tete ailleur).....

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 304
    Points : 348
    Points
    348
    Par défaut
    Donc tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String path = file.getPath() + ".txt";
    --Miss Gaëlle--

  16. #16
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Points : 203
    Points
    203
    Par défaut

    ça fonctionne. Merci, j'y avais meme pas pensé...
    Merci à tous

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 304
    Points : 348
    Points
    348
    Par défaut
    Pense à cliquer sur le petit bouton Résolu et bonne continuation
    --Miss Gaëlle--

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 36
    Points
    36
    Par défaut
    Désolé de déterrer un vieux post (résolu qui plus est ) mais bon ^^

    En fait mon problème est presque identique (ceci explique cela )

    Presque parceque, mon problème se situe un peu plus loin...

    Je voudrais rajouter l'extension (ça ça marche très bien) mais seulement si l'utilisateur ne l'a pas déjà mise ! (ben oui évidemment ^^)

    Si la personne entre monfichier.txt, je ne veut pas rajouter encore un .txt !


    J'espère avoir été assez clair

  19. #19
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    Je ferai simplement avec une condition


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(extention != ".txt"){
    // j'atoute l'etension .txt
    }else{
    //je fais rien.... je me repose
    }
    A toi de récupérer l'extension

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 51
    Points : 36
    Points
    36
    Par défaut
    Yop ! merci bien mais évidemment le problème se situe au niveau de la récup de l'extension ^^ (...)

    Bref j'ai essayé un ptit quelquechose qui fonctionne mais pas super propre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    url2 = fcUrl2.getSelectedFile().getAbsolutePath();
     
    		        int i = url2.lastIndexOf('.');
     
    		        if (i < 0 ||  i > url2.length() - 1) {
    		        	url2 = url2 +".txt";
                            }
     
    /* url2 étant l'adresse du fichier
     * fcUrl2 le fichier lui-même
     */

    J'ai aussi essayé (avant) avec cette variante plus propre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            int i = url2.lastIndexOf('.');
     
            if (i > 0 &&  i < url2.length() - 1) {
                ext = url2.substring(i+1).toLowerCase();
            }
     
            if(ext != "txt"){
            	url2 = url2 +".txt";
            }
    mais ça ne fonctionne (bizzarement) pas ! l'extension (ext) est toujours reconnue comme != "txt" , alors qu'avec un petit System.out.println(ext) je vois que ext = txt !

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

Discussions similaires

  1. [XL-2000] Sauvegarde non automatique
    Par babybell dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 04/06/2009, 21h04
  2. Réponses: 2
    Dernier message: 20/05/2009, 23h22
  3. [phpBB][3] Mettre automatiquements des smiley
    Par troumad dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 09/04/2008, 12h58
  4. Réponses: 10
    Dernier message: 28/03/2006, 15h10
  5. [JFileChooser]Sauver un fichier avec extension forcée
    Par FLCEOAP dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 03/03/2005, 01h11

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