sauvegarder un fichier

sauvegarder un fichier - Java - Programmation

Marsh Posté le 09-06-2005 à 15:55:55    

Bonjour,
J'ai un texte dans un JTextArea que je veux sauvegarder. En cliquant sur le bouton sauvegarder de l'interface, une fenetre apparait: l'utilisateur entre le nom du fichier et choisit l'endroit ou il doit le mettre. Je n'ai pas d'erreur, ni a la compilation ni à l'execution. Mais le fichier n'est pas crée au bon endroit: il se trouve dans le repertoire de mon projet sous eclipse...et je sais pas comment faire pour que le fichier se mette dans l'endroit spécifié par l'utilisateur.
Merci


Message édité par unknown_21 le 09-06-2005 à 16:01:45
Reply

Marsh Posté le 09-06-2005 à 15:55:55   

Reply

Marsh Posté le 09-06-2005 à 16:03:23    

Je suis pas un habitué du forum, mais à mon avis sans un bout de code, on ne saura pas bcp t'aider

Reply

Marsh Posté le 09-06-2005 à 16:11:27    

ok voici mon code:

Code :
  1. public class EcrireFichier {
  2. FileOutputStream fichier;
  3. ObjectOutputStream objet;
  4. public EcrireFichier (String nomFichier) throws FileNotFoundException, IOException {
  5.  fichier = new FileOutputStream(nomFichier);
  6.  objet = new ObjectOutputStream(fichier);
  7. }
  8. public void ecrireFichierInter (String texte) throws IOException {
  9.  objet.writeObject(texte);
  10. }
  11. public void fermer() throws IOException{
  12.  objet.close();
  13. }
  14. }


Code :
  1. public void actionPerformed(ActionEvent e) {
  2.  fc = new JFileChooser();
  3.  int returnVal = fc.showSaveDialog(fenetre);
  4.  if (returnVal == JFileChooser.APPROVE_OPTION) {
  5.   File file = fc.getSelectedFile();
  6.   String filename = file.getName();
  7.   String contenu = zone_texte2.getText();
  8.     
  9.      try
  10.       EcrireFichier fichierInter = new EcrireFichier(filename);
  11.       fichierInter.ecrireFichierInter(contenu);
  12.       fichierInter.fermer();
  13.      }
  14.      catch(FileNotFoundException e1){System.out.println("FileNotFoundException" );}
  15.      catch(IOException e2){System.out.println("IOException" );}
  16.     }
  17.     else
  18.     if (returnVal == JFileChooser.CANCEL_OPTION){
  19.          zone_texte2.setText("Opération annulée." );
  20.     }
  21. }


 
En fait, je pensais que le fait que l'utilisateur choisisse l'endroit ou sauvegarder le fichier suffisait. Mais apparemment non. Il faut surement récupérer cet endroit mais je ne sais pas comment faire.
Merci

Reply

Marsh Posté le 09-06-2005 à 16:28:33    

file.getName(); te renvoi juste le nom du fichier
C'est marqué dans l'aide !!  
Comme tu recupere un objet file , tu peux aussi avoiir le path normalement
 

Reply

Marsh Posté le 09-06-2005 à 16:36:51    

oui il y a la methode getPath(). Mais dans ma classe EcrireFichier, la méthode EcrireFichier prend en parametre le nom du fichier. Meme si je rajoute en parametre le chemin (obtenu par getPath()) , je le réutilise comment ce chemin? Avec quelle méthode? Quelle méthode permet de dire que l'on veut mettre tel fichier (nom obtenu avec getName() à tel endroit (chemin obtenu avec getPath() )?
merci

Reply

Marsh Posté le 09-06-2005 à 16:45:57    

c une blague rassure  moi ?

Reply

Marsh Posté le 09-06-2005 à 16:54:30    

je perdrais pas mon temps à faire des blagues. Je débute en java et j'ai des problemes donc je viens sur le forum pour avoir de l'aide. et si t'as pas envie de répondre, tu le fais pas, d'autres auront la gentillesse de le faire et de comprendre que qd on débute, on a pleins de pbs, surement basiques pour certains mais ils ont du passer par la aussi. Toi aussi, qd t'as commencé à programmer, t'as du poser des questions à la con.

Reply

Marsh Posté le 09-06-2005 à 17:05:16    

Sauf qu'on est pas la pour regarder a ta place dans l'aide.
Et que le fait de debuter en java ne t'excuse pas sur le fait de ne pas savoir ce qu'est une string et un path.
"c\tonrepertoire\"   +  "tonfichierala.con"  = "c\tonrepertoire\tonfichierala.con" .....
 

Reply

Marsh Posté le 09-06-2005 à 17:11:23    

sauf que tu n'as pas compris ce que je n'arrive pas à faire. Dans le code que j'ai mis, a quel moment est indiqué l'endroit ou doit aller le fichier à sauvegarder? car il va dans le repertoire de mon projet sous eclipse. Or ce n'est pas là que je veux qu'il aille. Donc il suffirait juste que je change l'endroit (et ça je saurais faire a priori). Mais deja, il faut que je sache dans mon code, ou je dois modifier (quelle methode ou quel parametre...).

Reply

Marsh Posté le 09-06-2005 à 18:43:38    

T'as regarder les constructeurs de JFileChooser ?
http://java.sun.com/j2se/1.5.0/doc [...] ng.String)

Reply

Marsh Posté le 09-06-2005 à 18:43:38   

Reply

Marsh Posté le 10-06-2005 à 10:50:38    

ok j'ai réussi. Je suis pas sur que ce soit une methode "propre" mais ça fonctionne... Je n'ai pas utiliser le constructeur de JFileChooser avec le path en parametre, mais merci quand meme phnatomass de ton aide.

Reply

Marsh Posté le 10-06-2005 à 10:52:40    

Si tu passe un nom de fichier sans passer le chemin, l'appli va prendre ....  
1/ le nom du fichier uniquement et va creer ton fichier dans le rep courant de l'appli  
2/ un chemin au hazard dans son chapeau magique  
3/ le chemin que tu veux grace a sa boule de cristal
 
La reponse est 1, ne t'embete pas a chercher on est la pour ça !!
 
Donc au lieu de passer une string representant uniquement le nom de ton fichier a ton constructeur tu passes l'objet File qui contient le chemin d'accès au fichier !!!  
En plus Ho miracle le constructeur FileOutputStream accepte aussi les objet File.
C'est une des nombreuses solution ...
 
Comme je sais lire j'ai juste regardé un peu la doc des objets que tu utilises
Le fait que tu debute n'est pas le PB tu vois !!
 
 
 

Reply

Marsh Posté le 10-06-2005 à 11:10:25    

si, gedeon, qd on est débutant, c'est pas évident de savoir ou est le probleme. Ce n'est absolument pas que je ne veux pas chercher dans la doc car j'ai cherché longtemps avant de poster le message. Mais je n'avais aucune idée d'ou venait le probleme. La classe EcrireFichier, c'est un prof qui nous l'a donnée et qui nous a dit de la laisser telle quelle car ça fonctionnait tout le temps comme ça. Donc je ne me suis pas dit que le probleme pouvait venir de là. La solution que j'ai fini par trouver est celle que tu as écrit (passer un File en parametre de FileOutputStream). Mais j'ai mis du temps à la trouver. Et là ou je me dis que ce forum ne sert pas à grand chose, c'est que tu aurais pu me le dire hier puisque tu savais. Pas me donner la réponse toute faite, c'est vrai que c'est aussi à moi de chercher. Mais me donner une piste. Comme l'a fait phnatomass, meme si ce n'est pas ce que j'ai utilisé.

Reply

Marsh Posté le 10-06-2005 à 11:51:40    

Bon je vais conclure la dessus.
Comme je t'ai dis la solution que je t'ai donné est une des nombreuses solutions. Ton prof t'as dis que sa fonction marchait telle que, donc il ne faut pas la modifier et la solution n'est pas la bonne à priori.
Je t'ai quand meme donné une piste :
""c\tonrepertoire\"   +  "tonfichierala.con"  = "c\tonrepertoire\tonfichierala.con" ..... "
Essaye de passer le chemin complet au lieu du nom dans la chaine nomFichier , cad file.getPath + "\\" + file.getName()
ça devrait marcher. c'est a vérifier.
Resultat je t'ai donné deux solutions que je n'avait pas forcement en tete avant de regarder l'aide.
En dehors de l'experience qui nous sépare il y a surtout le fait que j'ai "appri" a chercher, c tout. Hélas je ne suis pas sur que ça soit dans les préoccupation des profs.

Reply

Marsh Posté le 10-06-2005 à 12:02:47    

ok je te remercie.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed