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

Format d'échange (XML, JSON...) Java Discussion :

Dupliquer un fichier XML


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 87
    Points
    87
    Par défaut Dupliquer un fichier XML
    Salut !

    J'ai un fichier XML dont je modifie des contenus. Pour faire cela j'utilise l'API JDOM. Tout fonctionne correctement.

    Maintenant, je souhaiterai faire une copie du fichier XML avant que je ne le modifie. Une fois une copie crée, je travaillerai sur cette dernière pour avoir toujours une sauvegarde de mon fichier source. J'ai regardé la partie flux de la FAQ Java mais je n'ai rien trouvé qui puisse m'intéresser car je ne souhaite pas lire le fichier ligne par ligne mais juste le dupliquer en espérant que cela soit possible.

    Je ne sais pas si j'ai été clair, n'hésitez pas à me poser des questions.


    Merci par avance !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    Pourtant dans la FAQ il y a ca : http://java.developpez.com/faq/java/...FICHIER_copier qui devrait te convenir vu que c'est pour copier un fichier
    Bonne continuation
    Tschau

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par George7 Voir le message
    Salut,
    Pourtant dans la FAQ il y a ca : http://java.developpez.com/faq/java/...FICHIER_copier qui devrait te convenir vu que c'est pour copier un fichier
    Bonne continuation
    Tschau
    Oui en effet, je l'ai testé dans ma classe JDOM mais j'avais une erreur sur cette méthode, du coup j'ai voulu chercher une autre manière.

    Je vais re-tester ce code, merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si tu as une exception que tu n'arrives pas è résoudre, donne nous le message et ton code, on pourra peut-être t'aider...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 87
    Points
    87
    Par défaut
    Je n'ai pas d'erreur d'exception, par contre, en faisant du pas à pas, je remarque qu'après le destination.createNewFile(); , il va directement dans try du finally


    Y aurait-il une exception ? Que signifie cette "erreur" ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Nemesis007 Voir le message
    Je n'ai pas d'erreur d'exception, par contre, en faisant du pas à pas, je remarque qu'après le destination.createNewFile(); , il va directement dans try du finally


    Y aurait-il une exception ? Que signifie cette "erreur" ?
    Je ne suis pas sûr de bien comprendre ce qu'il se passe chez toi, surtout que je sais pas ce que tu as écris. Ceci dit, si il va dans le finally c'est normal, car un finally est toujours exécuté qu'il ait eu une exception ou pas. Un petit bout de code m'aiderait vraiment

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 87
    Points
    87
    Par défaut
    J'ai une erreur à la ligne d'appel de ma méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    boolean test = copierFichier(FileSource, FileDestination);
    l'erreur étant :

    The method copierFichier(File, File) is undefined for the type JDOM
    JDOM étant ma classe

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 87
    Points
    87
    Par défaut
    Oups, désolé, tromper de bouton (éditer / citer)

    Bref, tant qu'à faire, voici le code de ma méthode (identique à l'exemple) :

    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
     
    public static boolean copier( File source, File destination )
    	 {
    	         boolean resultat = false;
     
    	         // Declaration des flux
    	         java.io.FileInputStream sourceFile=null;
    	         java.io.FileOutputStream destinationFile=null;
     
    	         try {
    	                 // Création du fichier :
    	                 destination.createNewFile();
     
    	                 // Ouverture des flux
    	                 sourceFile = new java.io.FileInputStream(source);
    	                 destinationFile = new java.io.FileOutputStream(destination);
     
    	                 // Lecture par segment de 0.5Mo 
    	                 byte buffer[]=new byte[512*1024];
    	                 int nbLecture;
     
    	                 while( (nbLecture = sourceFile.read(buffer)) != -1 ) {
    	                         destinationFile.write(buffer, 0, nbLecture);
    	                 } 
     
    	                 // Copie réussie
    	                 resultat = true;
    	         } catch( java.io.FileNotFoundException f ) {
     
    	         } catch( java.io.IOException e ) {
     
    	         } finally {
    	                 // Quoi qu'il arrive, on ferme les flux
    	                 try {
    	                         sourceFile.close();
    	                 } catch(Exception e) { }
    	                 try {
    	                         destinationFile.close();
    	                 } catch(Exception e) { }
    	         } 
    	         return( resultat );
    	 }

  9. #9
    Invité
    Invité(e)
    Par défaut
    Tu déclares : copier pour ta méthode et ensuite tu appelles copierFichier, c'est normal ?

  10. #10
    Membre actif Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Points : 272
    Points
    272
    Par défaut Tout existe !!!
    1) Beaucoup de choses existent !
    2) Ne pas réinventer la roue !

    http://commons.apache.org/io/api-release/index.html


    Sinon pour ton problème catch toutes les exceptions même les runtime et tu devrait voir apparaitre ton problème (droit d'accès, problème de chemin...).

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par George7 Voir le message
    Tu déclares : copier pour ta méthode et ensuite tu appelles copierFichier, c'est normal ?
    Oula, correct ! J'ai changé le nom tout à l'heure, je l'ai pas rectifier...

    Ceci étant dit, tout en faisant du pas à pas, le code écrit en rouge n'est pas exécuté, il arrive directement à la ligne en bleue:

    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
     try {
    	                 // Création du fichier :
    	                 destination.createNewFile();
    	                 
    	                 // Ouverture des flux
    	                 sourceFile = new java.io.FileInputStream(source);
    	                 destinationFile = new java.io.FileOutputStream(destination);
    	                 
    	                 // Lecture par segment de 0.5Mo 
    	                 byte buffer[]=new byte[512*1024];
    	                 int nbLecture;
    	                 
    	                 while( (nbLecture = sourceFile.read(buffer)) != -1 ) {
    	                         destinationFile.write(buffer, 0, nbLecture);
    	                 } 
    	                 
    	                 // Copie réussie
    	                 resultat = true;
    	         } catch( java.io.FileNotFoundException f ) {
    	                 
    	         } catch( java.io.IOException e ) {
    	                 
    	         } finally {
    	                 // Quoi qu'il arrive, on ferme les flux
    	                 try {
    	                         sourceFile.close();
    	                 } catch(Exception e) { }
    	                 try {
    	                         destinationFile.close();
    	                 } catch(Exception e) { }
    	         }

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bon ben deux choses:
    1/ les catch vides, spas top pour voir ce qu'il se passe,
    2/ comme a dit aperrin, fais un catch Exception pour tout récupérer et un printStackTrace dedans pour avoir le message d'erreur.
    Sinon tu peux scroller un peu plus sur le lien que je t'ai donné et tu peux utiliser la méthode transferTo au lieu de le faire à la main. nio est dans le jdk, pas besoin d'ajouter une librairie juste pour copier un fichier...

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 87
    Points
    87
    Par défaut
    Merci pour ton aide George7 ! J'ai réussi en utilisant la méthode mkdir().


    En fait, c'est simple, je sais pourquoi ça ne fonctionnait pas... je passais à ma méthode copierFichier la variable FileDestination avec un chemin qui n'existait pas : je pointais sur un répertoire non crée. Du coup, j'ai crée ce répertoire et maintenant j'ai bien une copie de mon fichier dans ce répertoire

    Merci encore pour ton aide !

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

Discussions similaires

  1. [XL-2007] Comment eviter de dupliquer macro sur imports fichier xml
    Par ALEX80800 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/11/2013, 20h54
  2. dupliquer un fichier xml avec XmlDocument
    Par FadeOut dans le forum C#
    Réponses: 6
    Dernier message: 01/03/2011, 20h12
  3. dupliquer un fichier xml
    Par freddy000 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 06/01/2011, 23h35
  4. [Kylix] Composant IBM pour fichiers XML
    Par Mister Nono dans le forum EDI
    Réponses: 1
    Dernier message: 29/09/2002, 20h28
  5. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29

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