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 :

Concatenation de fichiers


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 Concatenation de fichiers
    Bonjour,

    je voudrai concaténter 3 fichiers sur un seul fichier.
    je sais comment le faire, il y a plusieurs façon de le faire.

    Mais ce que je recherche est:

    j'ai trois fichier texte:

    fichier1.txt = A fichier2.txt = D fichier3.txt = G
    B E H
    C F I

    ce que je veux: copier tout le contenu du fichier1.txt dans fichiersave.txt et
    copier tout le contenu des fichiers2 et fichier3 en ignorant la permière ligne du texte.

    Donc en final, je dervai avoir un fichiersave.txt dont le contenu sera:

    fichiersave.txt = A
    B
    C
    E
    F
    H
    I

    Peut-on le faire en java ou devrait-on passer par des script dos?

    Merci

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Oui tu peux le faire en java.

    Il suffit d'ouvrir un fichier destination en écriture.
    Ouvrir le premier fichier, le lire ligne/ligne et écrire ligne/ligne dans la destination.
    Ouvrir le second fichier, le lire ligne/ligne et écrire ligne/ligne dans la destination. (en skippant) la première ligne).
    Ouvrir le 3eme fichier, le lire ligne/ligne et écrire ligne/ligne dans la destination. (en skippant) la première ligne)....

    Sinon y'a dans la faq tout ce qu'il faut me semble-t-il.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Il n'est pas nécessaire de lire ligne a ligne si c'est pour concaténer sans traitement particulier sur le contenu.

    Il est possible de copier un fichier dans un autre à l'aide de FileInputStream et FileOutputStream. L'avantage, c'est que l'un des constructeurs de FileOutputStream permet de préciser si on veut ajouter à la fin du fichier ou écraser son contenu.
    Il n'est donc pas nécessaire de passer manuellement le début du fichier.
    Librairie d'accès LDAP en Java : LdapBeans
    et pensez au tag

  4. #4
    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
    OK merci pour la faq, j'ai trouvé pas mal de chose concernant la manipulation des fichiers.

    Effectivement il faudrait faire sur plusieurs étapes pour arriver à ce que je veux.
    Mais il y a une autre contrainte que j'ai oublié, c'est que j'ai une quinzaine de fichiers qui arrivent et sont stockés dans un répertoire tous les jours d'un PC distant.

    Donc le répertoire grossit de plus en plus, là n'est pas le problème pour moi.

    Ces 15 fichiers arrivent à des intervalles de temps bien défini, c'est à dire le 1er fichier arrive à par ex: 06:00:00 et le dernier le lendemain à 04:00:00


    Donc tous ces fichiers arrivent tous dans le même répertoire.

    Par quel moyen puis-je récupérer les 15 fichiers et de les classer ou de les concaténer?

    en sachant que je ne veux pas tenir compte des heures de début et fin d'envoi, je ne veux pas tenir compte de la date non plus parce que je voudrai utiliser mon programme pour gérer les autres fichiers qui arrivent sur un autre répertoire et provenant d'autre PC.

    Je crois que c'est impossible. pour l'instant je suis obligé de rentrer dans le répertoire, de les selectionner manuellement et de les classer ensuite.

    Meme en script dos je n'ai rien trouvé.

    merci

  5. #5
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Citation Envoyé par ssmano Voir le message
    en sachant que je ne veux pas tenir compte des heures de début et fin d'envoi, je ne veux pas tenir compte de la date non plus parce que je voudrai utiliser mon programme pour gérer les autres fichiers qui arrivent sur un autre répertoire et provenant d'autre PC.
    La question est : Sur quoi comptes tu te baser ?
    Librairie d'accès LDAP en Java : LdapBeans
    et pensez au tag

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Citation Envoyé par Mobius Voir le message
    Il n'est pas nécessaire de lire ligne a ligne si c'est pour concaténer sans traitement particulier sur le contenu.
    Ne pas lire la premiere ligne des autres fichiers c'est quoi ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Ne pas lire la premiere ligne des autres fichiers c'est quoi ?
    Très juste j'ai une fois de plus lu un peu trop rapidement
    Librairie d'accès LDAP en Java : LdapBeans
    et pensez au tag

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Y'a aucun mal. Je suis le premier a faire la même chose
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    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
    Je reformule ma première question parce que la mise en forme de mon texte n'est pas bonne.

    Bonjour,

    je voudrai concaténter 3 fichiers sur un seul fichier.
    je sais comment le faire, il y a plusieurs façon de le faire.

    Mais ce que je recherche est:

    j'ai trois fichier texte:

    fichier1.txt contient:
    ligne1
    ligne2
    ligne3


    fichier2.txt contient:
    ligne4
    ligne5
    ligne6


    fichier3.txt contient:
    ligne7
    ligne8
    ligne9



    ce que je veux: copier tout le contenu du fichier1.txt dans fichiersave.txt et
    copier tout le contenu des fichiers2 et fichier3 en ignorant la permière ligne du texte.

    Donc en final, je dervai avoir un fichiersave.txt dont le contenu sera:

    fichiersave.txt doit contenir
    ligne1
    ligne2
    ligne3
    ligne5
    ligne6
    ligne8
    ligne9


    Peut-on le faire en java ou devrait-on passer par des script dos?
    J'éspère que c'est clair.
    Merci

  10. #10
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    J'avais très bien lu la première fois et j'ai déjà répondu positivement.

    Est-ce que ceci pourrait t'inspirer ? Ce n'est surement pas la manière la plus efficace, mais ca aura le mérite de fonctionner si je ne m'abuse. (Il manque surement quelques test de sureté mais osef pour le moment, genre fichier pas vide etc ...)

    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
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.PrintStream;
     
     
    public class toto
    {
     
    	/**
             * @param args
             * @throws IOException 
             */
    	public static void main(String[] args) throws IOException
    	{
    		PrintStream ps = new PrintStream(new FileOutputStream(new File("result.txt")));
    		concat(ps, "file1.txt", true);
    		concat(ps, "file2.txt", false);
    		concat(ps, "file3.txt", false);
    		ps.flush();
    		ps.close();
    	}
     
    	private static void concat(PrintStream ps, String string, boolean b) throws IOException
    	{
    		File f = new File(string);
    		DataInputStream dis = new DataInputStream(new FileInputStream(f));
    		String line = dis.readLine();
    		if (b==true)
    		ps.println(line);
    		while ((line = dis.readLine()) != null)
    			ps.println(line);
    	}
    }
    Par contre pour le 2 ème problème j'ai rien compris
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    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 Wax78.
    je vais essayer d'expliquer plus clairement pour le deuxième problème.

    j'ai un pc qui envoit 15 fichiers par jour.


    par exemple le 1er jour il envoie 15 fichiers qui portent des noms comme:
    file-jour1-01.txt
    file-jour1-02.txt
    ...
    file-jour1-15.txt

    Puis le deuxième jour, il envoie 15 autres fichiers qui portent des noms comme:

    file-jour2-date-01.txt
    file-jour2-date-02.txt
    ....

    Donc si j'essaie de trier les fichiers dont le nom se termine par 01, puis 02..
    A ce moment je vais grouper tous les fichiers dont le nom se termine par 01, puis 02..etc

    Mais ce que je veux faire, c'est trier les fichiers par groupe de :

    groupe1 qui doit contenir:
    file-jour1-01.txt
    file-jour1-02.txt
    ...
    file-jour1-15.txt

    groupe2 qui doit contenir:
    file-jour2-date-01.txt
    file-jour2-date-02.txt
    ....

    Pour faire ceci on peut faire un tri en fonction de la date d'envoi de chaque fichier, mais je ne peux pas utiliser cette technique parce que tout simple l'envoi du premier paquet de 15 fichiers se fait sur deux jours à cheval.

    ce qui veut dire que je risque de me retrouver avec un paquet de 15 fichiers dont les noms se termineront bien de 01 à, 15 mais avec les mêmes dates.

    Donc mes fichiers mélangés.
    Si t'as pas compris laisse tomber je vais fermer le thread.
    je me prends la tête depuis 4 jours.

    merci à toi et les autres.

  12. #12
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Euh alors peut être une idée...

    Si tu classe tous ces fichiers par ".....01" et tu trie cette liste par ordre chronologique.

    Le premier fichier arrivé sera bien en tête de liste.... tu fais pareil pour les 02, 03..... 15.

    Ensuite, il te suffit de prendre le premier de chaque liste pour avoir tous ceux du même lot non ? ensuite les second de chaque liste etc....

    (ps : pardonne moi de pas mettre l'exemple visuel, mais j'ai tenté de le faire mais ca rend très très moche... je verrais avec une feuille et un stylo ce soir si j'ai le temps)
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  13. #13
    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, si tu savais comme que je me prends la tête avec ce truc.
    Il y a des moyens d'y arriver mais come tu dis c'est moche, long et disgracieux comme code.

    Par contre je pensais à un truc plus simple.
    Ne peut-on pas utiliser les methodes listFiles() et lastModified()?

    Et là on pourrait récupérer juste les derniers fichiers ajoutés récemments dans le répertoire.
    Donc normalement on devrait pouvoir lister juste les 15 derniers fichiers récemment ajoutés.

    Peut-être est-ce plus intérréssant de cette façon là.
    je vais regarder, mais avant au stylo et papier donc.

    à plus

  14. #14
    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,

    j'ai trouvé une solution avec :
    java.text.SimpleDateFormat;
    java.util.Date;

    j'arrive en fait à obtenir tout simplement la liste de fichiers ajoutés récemment ou d'ailleurs je peux choisir l'intervalle en date et heure.

    C'est une solution qui fonctionne bien.
    il me classe vraiment les derniers fichiers par paquet de 15 suivant l'ordre chronolique de leur arrivée.

    merci

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

Discussions similaires

  1. Concaténer deux fichiers Ligne/Ligne avec SH
    Par guiltouf dans le forum Linux
    Réponses: 7
    Dernier message: 22/05/2007, 14h35
  2. Concaténer plusieurs fichier pdf.
    Par gege2061 dans le forum Linux
    Réponses: 7
    Dernier message: 28/10/2006, 13h14
  3. Supprimer les dernieres lignes et concatener plusieurs fichier
    Par filsdugrand dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 11/04/2006, 21h15
  4. Concaténation de fichiers sous UNIX?
    Par airmax77 dans le forum Linux
    Réponses: 4
    Dernier message: 27/01/2006, 16h23
  5. [Script .BAT] Concatenation de fichiers plats
    Par Jokeur dans le forum Autres langages
    Réponses: 1
    Dernier message: 03/05/2005, 12h14

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