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 :

Bouton enregistrer sous


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut Bouton enregistrer sous
    Bonjour,

    J'ai fait une petite application qui créé un fichier et dans cette application j'aimerais pouvoir ajouter dans ma JMenuBar un JMenuItem pour pouvoir enregistrer ce fichier sur le disque dur à l'endroit que l'utilisateur aura choisi. Or je ne sais pas du tout comment m'y prendre si quelqu'un pouvais me donner une piste

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Bon alors j'ai trouvé comment il fallait faire seulement cela ne marche pas le contenu du fichier est illisible et il s'enregistre dans le répertoire de mon projet au lieu de l'endroit que j'ai choisi.

    Voici les deux classes que j'utilise pour faire cela:

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    package edt;
     
    import java.awt.event.ActionEvent;
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.StringWriter;
    import javax.swing.AbstractAction;
    import javax.swing.JFileChooser;
     
    public class SaveAction extends AbstractAction {
    	private static final long serialVersionUID = 1L;
    	private InterfaceGraphique fenetre;
    	private static File tmp;
     
    	public SaveAction (InterfaceGraphique fenetre, String texte) {
    		super (texte);
    		this.fenetre = fenetre;
    	}
     
    	public static void receptFichier (File temp) {
    		tmp = temp;
    	}
     
    	public static String loadFile(File f) throws IOException {
    			BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
    		    StringWriter out = new StringWriter();
    		    int b;
     
    		    while ((b=in.read()) != -1) {
    		    	out.write(b);
    		    }
    		    out.flush();
    		    out.close();
    		    in.close();
     
    		    return out.toString();
    	}
     
        public void actionPerformed (ActionEvent e) {
        	JFileChooser fc = new JFileChooser();
    		int returnVal = fc.showSaveDialog(fenetre);
     
    		if (returnVal == JFileChooser.APPROVE_OPTION) {
    			File file = fc.getSelectedFile();
    		    String filename = file.getName();
    		    String contenu = null;
     
    		    try {
    				contenu = SaveAction.loadFile (tmp);
    			} 
    		    catch (IOException e2) {
    				e2.printStackTrace();
    			}
    		    EcrireFichier fichierInter = null;
     
    			try {
    				fichierInter = new EcrireFichier(filename);
    			} 
    			catch (IOException e1) {
    				e1.printStackTrace();
    			}
    		    try {
    				fichierInter.ecrireFichierInter(contenu);
    			} 
    		    catch (IOException e2) {
    				e2.printStackTrace();
    			}
    		    try {
    				fichierInter.fermer();
    			} 
    		    catch (IOException e1) {
    				e1.printStackTrace();
    			}
    		}
    		else {
    			if (returnVal == JFileChooser.CANCEL_OPTION) {
                                    JOptionPane.showMessageDialog (fenetre, "Opération annulée");
    		    }
    		}
        }
    }
    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
    package edt;
     
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
     
    public class EcrireFichier {
    	private FileOutputStream fichier;
    	private ObjectOutputStream objet;
     
    	public EcrireFichier(String nomFichier) throws IOException {
    		fichier = new FileOutputStream(nomFichier);
    		objet = new ObjectOutputStream(fichier);
    	}
     
    	public void ecrireFichierInter (String texte) throws IOException {
    		objet.writeObject(texte);
    	}
     
    	public void fermer() throws IOException {
    		objet.close();
    	}
    }
    Si quelqu'un peut me dire ce qui cloche Merci

  3. #3
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Tu ne sais pas du tout comment t'y prendre pour faire choisir à l'utilisateur un emplacement du disque où enregistrer ton fichier ?
    Si c'est cela, un JFileChooser te permettra de faire choisir un répertoire. Voici des exemples ici (en) ou/et ici (fr).

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Et bien en fait un peu des deux. Mon fichier ce créer bien seulement pas à l'endroit que j'ai choisi mais dans le répertoire de mon projet. Ensuite lorsque j'ouvre le fichier qui s'est créé le contenu est totalement incompréhensible

    Le fichier que je veux enregistrer est déjà créé par défaut ce que je cherche à faire est de juste en faire une copie à l'endroit ainsi que, si besoin, le nom que l'utilisateur aura choisie

  5. #5
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Quand tu parle de copie, c'est dupliquer simplement le fichier ou c'est enregistrer un nouveau fichier en variant des infos ? Quel type de fichier est-ce ? Du texte ?

    Le JFileChooser permet de choisir un fichier et tu récupère un objet File. Avec la méthode getAbsolutePath() tu récupère le chemin absolu, ce qui règle ton premier problème.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    No c'est dupliquer un fichier je veux juste faire en sorte que l'utilisateur puisse copier ce fichier ailleurs avec un autre nom. C'est un fichier en .html

    Je n'ai pas vu dans la doc de la classe JFileChooser une méthode getAbsolutePath(), je la connais que pour la classe File mais le chemin de mon fichier je l'ai déjà ce qu'il me faudrait c'est le chemin du répertoire ou l'utilisateur veux le dupliquer.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Je n'ai rien dit j'ai compris ce que tu voulais dire avec getAbsolutePath(), j'ai donc remplacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    File file = fc.getSelectedFile(); 
              String filename = file.getName();
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String filename = fc.getSelectedFile ().getAbsolutePath ();
    et ça marche^^ Désolé d'avoir été aussi long à la détente

    Sinon pour mon autre problème tu as une idée du pourquoi le contenu du fichier est incompréhensible (avec des caractère bizare on dirait une langue asiatique je pense) ?

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

Discussions similaires

  1. bouton enregistrer sous
    Par fouinette dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 06/06/2011, 16h52
  2. [XL-2003] VBA - bouton enregistrer sous
    Par jam92400 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/10/2010, 13h36
  3. [JSF] Bouton "Enregistrer sous"
    Par len1sensibl dans le forum JSF
    Réponses: 0
    Dernier message: 03/02/2010, 09h36
  4. bouton enregistrer sous
    Par tit_oune dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/05/2006, 16h58
  5. Bouton enregistrer sous
    Par tit_oune dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 18/05/2006, 16h31

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