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 :

Copier tous les fichiers txt vers un autre fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut Copier tous les fichiers txt vers un autre fichier
    Bonjour à tous,

    je suis débutant en java et je recherche un code pour lire le contenu de tous les fichiers .txt présents dans un répetoire puis de copier le contenu de tous les fichiers sur un seul fichier.

    D'après mes recherches, j'arrive à lire des fichiers qui sont présents dans un répertoire puis copier leur contenu dans un autre fichier. Mais je suis obligé de spécifier le nom des fichiers à chaque fois.

    Comment faire pour éviter de spécifier le nom des fichiers, il doit y avoir une fonction qui permet de lire tous les fichier à l'extension txt et de copier sur un autre fichier.

    voici mon code trouvé avec Google mais je crois que c'est une manière pas très élégante car je l'ai modifié un peu.


    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
    import java.io.*;
     
    class FileStreamsTest {
        public static void main(String[] args) {
            try {
                File inputFile = new File("Text1.txt");
                File inputFile2 = new File("Text2.txt");
                File inputFile3 = new File("Text3.txt");
     
                File outputFile = new File("TextOutput.txt");
     
                FileInputStream fis = new FileInputStream(inputFile);
                FileInputStream fis2 = new FileInputStream(inputFile2);
                FileInputStream fis3 = new FileInputStream(inputFile3);
     
                FileOutputStream fos = new FileOutputStream(outputFile);
                int c;
                int b;
                int a;
     
                while ((c = fis.read()) != -1)
                {
                   fos.write(c);
                }
     
                while ((b = fis2.read()) !=-1)
     
     
                { fos.write(b);
                }
     
     
                while ((a = fis3.read()) !=-1)
                {
                    fos.write(a);
                }
     
     
                fis.close();
                fis2.close();
                fis3.close();
                fos.close();
            } catch (FileNotFoundException e) {
                System.err.println("FileStreamsTest: " + e);
            } catch (IOException e) {
                System.err.println("FileStreamsTest: " + e);
            }
        }
    }
    Merci à tous

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par ssmano Voir le message
    il doit y avoir une fonction qui permet de lire tous les fichier à l'extension txt et de copier sur un autre fichier.
    Non. Mais il y a une fonction qui permet de connaître tous les fichiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // répertoire courant
    File here = new File(".");
    // fichiers et répertoires du répertoire courant
    for(File content : here.listFiles()) {
      // vérifier que c'est bien un fichier et qu'il termine en .txt
      if(content.isFile() && content.getName().endsWith(".txt")) {
        // Faire quelque chose avec ce fichier .txt
      }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut
    Merci mais j'ai une erreur:

    "FileStreamsTest: java.io.FileNotFoundException: . (Accès refusé)"

    alors que les fichiers existent dans le répertoire du projet NetBeans.



    code modifié:

    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
    import java.io.*;
     
    class FileStreamsTest {
        public static void main(String[] args)
        {
            try
            {
                File here = new File(".");
                for(File content : here.listFiles()) {
                if(content.isFile() && content.getName().endsWith(".txt"))
                {
                }
                //File inputFile = new File("Text1.txt");
                //File inputFile2 = new File("Text2.txt");
               // File inputFile3 = new File("Text3.txt");
     
                File outputFile = new File("TextOutput.txt");
     
                FileInputStream fis = new FileInputStream(here);
               // FileInputStream fis2 = new FileInputStream(inputFile2);
               ///FileInputStream fis3 = new FileInputStream(inputFile3);
     
                FileOutputStream fos = new FileOutputStream(outputFile);
                int c;
               // int b;
                //int a;
     
                while ((c = fis.read()) != -1)
                {
                   fos.write(c);
                }
     
               // while ((b = fis2.read()) !=-1)
     
     
               // { fos.write(b);
               // }
     
     
               // while ((a = fis3.read()) !=-1)
                //{
                   // fos.write(a);
                //}
     
     
                fis.close();
               // fis2.close();
                //fis3.close();
                fos.close();
            }
            }
                catch (FileNotFoundException e)
     
            {
                System.err.println("FileStreamsTest: " + e);
            }
                catch (IOException e)
            {
                System.err.println("FileStreamsTest: " + e);
            }
        }
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Points : 491
    Points
    491
    Par défaut
    salut essaye ca
    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
    //fichier de sauvegarder
            File save = new File("sauvegarde.txt");
            //on tente de créer le fichier
            if(!save.exists()){
                try {
                    save.createNewFile();
                } catch (IOException ex) {
                    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            // répertoire courant
            File here = new File(".");
            OutputStream out = null;
            try {
                //tente d'ouvrir en mode écriture le fichier de sauvegarde
                out = new FileOutputStream(save);
                // fichiers et répertoires du répertoire courant
                for(File content : here.listFiles()) {
                    // vérifier que c'est bien un fichier et qu'il termine en .txt
                    //et que on essaye pas de copier le fichier de sauvegarde
                    if(!(content.getName().equals(save.getName())) && content.isFile() && content.getName().endsWith(".txt")) {
                        FileInputStream in = null;
                        try {
                            //tente d'ouvrir en mode lécture
                            in = new FileInputStream(content);
                            // Lecture par segment de 0.5Mo
                            byte buffer[] = new byte[512*1024];
                            int nbLecture = 0;
                            while( (nbLecture = in.read(buffer)) != -1 ) {
                                out.write(buffer, 0, nbLecture);
                            }
                        } catch (IOException ex) {
                            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                        } finally{
                            //tente de fermer
                            try {
                                in.close();
                            } catch (IOException ex) {
                                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                    }
                }
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            } finally{
                //tente de fermer 
                try {
                    out.close();
                } catch (IOException ex) {
                    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
    ça devrait le faire

    a++

  5. #5
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut
    Merci KimJoa,

    cela fait deux jours entiers que je passe à trouver l'erreur sur mon code.
    d'ailleurs je n'ai toujours pas trouvé la solution.

    Mais avec ton code, effectivement ça marche comme un flingue.
    c'est hyper rapide.

    Merci
    à plus

  6. #6
    Membre régulier Avatar de stpaul04
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 271
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    sur le codeprécédent, le nom du fichier final est "sauvegarde.txt", mais si on veut choisir le nom de fichier nous même juste avant la copie des autres fichiers textes, comment faire?

    Merci

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    'Faudrait taper le fichier en paramètre de la ligne de commande.

    Genre, lancer le programme avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java FileStreamsTest sauvegarde.txt
    le nom "sauvegarde.txt" sera accessible dans public static void main(String[] args), parce que ce sera le premier (et seul) élément de args :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(args.length != 1) {
      System.err.println("Vous n'avez pas spécifié dans quel fichier sauvegarder");
      System.exit(1);
    }
    System.out.println("Sauvegarde dans " + args[0]);
    File save = new File(args[0]);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/05/2015, 16h25
  2. Réponses: 6
    Dernier message: 10/05/2010, 22h53
  3. Copier fichiers excel vers un autre fichier
    Par bb62 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/10/2008, 16h15
  4. Indexer un fichier txt dans un autre fichier txt
    Par dimitri1233 dans le forum Langage
    Réponses: 1
    Dernier message: 22/12/2006, 16h06
  5. Réponses: 1
    Dernier message: 25/03/2006, 14h45

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