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 :

JAVA - Regroupement contenu fichiers


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 197
    Par défaut JAVA - Regroupement contenu fichiers
    Bonjour,

    connaissez vous un moyen rapide de concaténer le contenu de x fichiers .txt dans un seul .txt ?
    Ou peut-être existe-t-il une API faisant cela
    Merci d'avance

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Et bien :
    ouvrir un fichier en ecriiture
    pour chaque fichier a lire
    ecrire son contenu dans le fichier en ecriture


    C'est pas sorcier en fait

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 197
    Par défaut
    oui mais j'pense qu'il doit exister une API avec une methode prenant en argument une liste de fichier et le fichier destination, et qui ferait cela non?

  4. #4
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Par défaut
    Comme dit plus haut ce n'est pas sorcier: En fait le seul point litigieux est (comme toujours) la gestion des erreurs. L'exemple ci-apres ignore simplement les fichiers non presents ( a la manière de 'cat' sous Unix). Un autre comportement serait de ne realiser la concatenation que si toutes les sources peuvent être effectivement lues. Dans ce cas ou pourrait soit utiliser un fichier temporaire (voir File API) ou constituer l'ouput Stream en memoire si on ne craint pas de "OutOfMemoryError" (voir ByteArrayOutputStream)


    import java.io.FileInputStream ;
    import java.io.FileOutputStream ;
    import java.io.OutputStream ;
    import java.io.InputStream ;
    import java.io.IOException ;
    import java.io.FileNotFoundException ;

    public class Concatenation
    {
    public void concatenate(OutputStream outputs, String... sources) throws IOException
    {
    for ( String source : sources )
    {
    try
    {
    FileInputStream inputs = new FileInputStream(source) ;

    try
    {
    while ( inputs.available() > 0 )
    {
    outputs.write(inputs.read()) ;
    }
    }
    finally { inputs.close() ; }
    }
    catch (FileNotFoundException exception)
    {
    System.err.println("Concatenation:Cannot open Source File : "+source) ;
    }
    catch(IOException exception)
    {
    throw new IOException("Concatenation:Cannot process Source File '"
    +source
    +"' due to : "+exception.getMessage()) ;
    }
    }
    return ;
    }
    public void concatenate(String path , String... sources) throws IOException
    {
    try
    {
    FileOutputStream outputs = new FileOutputStream(path) ;

    try
    {
    this.concatenate(outputs,sources) ;
    }
    finally { outputs.close() ; }
    }
    catch (FileNotFoundException exception)
    {
    throw new IOException("Concatenation:Cannot open Output File : "+path) ;
    }
    return ;
    }
    public static void main(String... arguments) throws IOException
    {
    String path = System.getProperty("Concatenation.Output") ;

    OutputStream outputs =

    (path == null) ? System.out : new FileOutputStream(path) ;

    new Concatenation().concatenate(outputs,arguments) ;
    }
    }

  5. #5
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Utilise plutot la méthode transferTo de la classe java.nio.FileChannel : code réduit + traitement plus rapide. Pourquoi encore hésiter ?...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 197
    Par défaut
    ouais j'connaissait pas c pas mal et facile a utilisé.
    Par contre je veut copier tout le contenu du fichier sauf la 1ere ligne.
    Il n'y a rien apparament pour sauter une ligne dans l'API non?

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

Discussions similaires

  1. java -modifier contenu fichier word
    Par iliasdu76 dans le forum Général Java
    Réponses: 2
    Dernier message: 23/04/2012, 11h58
  2. [XML][Java] parser plusieurs fichiers en un seul arbre DOM ?
    Par mrlenul dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/11/2005, 11h09
  3. Réponses: 3
    Dernier message: 02/10/2005, 12h30
  4. [XML/Java] Serialiser un fichier XML
    Par P4dre dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 03/08/2005, 14h41
  5. Regrouper des fichiers sous un même nom
    Par Azharis dans le forum C++
    Réponses: 7
    Dernier message: 22/06/2005, 12h05

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