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

Entrée/Sortie Java Discussion :

[debutant] concaténation de fichiers [FAQ]


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut [debutant] concaténation de fichiers
    Mon but est de copier le contenu de plusieurs fichiers XML pour ne faire plus que un fichier.
    J'ai pris le code suivant sur le forum pour copier un fichier source vers un fichier destination :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /* 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);
    Je pensais boucler sur ce code pour copier tous mes fichiers xml dans le fichier destination.
    Mais j'ai un probleme : Chaque copie de fichier écrase celui d'avant.
    Comment faire pour écrire à la suite du fichier sans toucher ce qui a déjà été écrit?

    Merci

  2. #2
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    pour créer le FileOutPutStream, tu dois utiliser le constructeur FileOutputStream(File file, Boolean append) avec append a true.

    Autrement dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    destinationFile = new java.io.FileOutputStream(destination, true);
    Je sais que désormais vivre est un calembour,
    La mort est devenue un état permanent,
    Le monde est aux fantômes, aux hyènes et aux vautours.
    Moi je vous dis bravo et vive la mort.

  3. #3
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Ou mieux encore, tu n'ouvres la destination qu'au debut et tu la refermes lorsque le dernier fichier a ete ajoute ..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    ok merci bien
    je vais tenter ça

  5. #5
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    en n'oubliant pas le tag [resolu] si ça marche ;)
    Je sais que désormais vivre est un calembour,
    La mort est devenue un état permanent,
    Le monde est aux fantômes, aux hyènes et aux vautours.
    Moi je vous dis bravo et vive la mort.

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 49
    Points : 52
    Points
    52
    Par défaut
    Tu peux aussi le RandomAccessFile("foo", LongPosition). Cà marche, c'est sure je l'ai utiliser pour découper des programmes afin qu'ils tiennent sur X disquettes.
    Permet la même chose que seek() en C.

    Mais la solution de Satch fera surement parfaitement l'affaire.
    [code:1]man -k probleme[/code:1]
    :code:

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Voila chez moi le constructeur FileOutputStream(File file, Boolean append) me renvoyait une erreure !! Je ne sais pas pourquoi ....
    donc j'ai utiliser celui là : FileOutputStream(String file, Boolean append)

    Ce qui donne pour le programme :
    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
    public static boolean copier( String source, String destination)
    {
            boolean resultat = false;
            /* Declaration des flux */
            FileInputStream sourceFile=null;
     
            try {
                    /* Ouverture des flux */
                   sourceFile = new FileInputStream(source);
                   OutputStream destinationFile = new FileOutputStream(destination,true);
     
                    /* 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;
                    destinationFile.close();
            } 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) { }
            } 
            return( resultat );
    }
     
    Voilou  :D

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2002
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Un bout de code qui mériterait d'être dans la FAQ, notamment en liaison à la question : " Comment écrire à la fin d'un fichier ? [Nouveau]"

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

Discussions similaires

  1. [debutant] envoi de fichier
    Par djchow dans le forum MFC
    Réponses: 8
    Dernier message: 21/03/2005, 16h57
  2. [debutant]inclusion de fichier .js !!!
    Par christophebmx dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/01/2005, 14h16
  3. Comment concaténer plusieurs fichiers en un ?
    Par souch dans le forum Langage
    Réponses: 16
    Dernier message: 14/12/2004, 18h58
  4. [Debutant(e)] Problème fichier texte et vue
    Par solenn dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 21/07/2004, 09h23
  5. [Debutant]Nom de fichiers incomplets
    Par Drizzt [Drone38] dans le forum MFC
    Réponses: 3
    Dernier message: 04/06/2004, 16h33

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