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

C# Discussion :

c# 3.0 -> Concaténation de fichier .TXT


Sujet :

C#

Vue hybride

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Par défaut c# 3.0 -> Concaténation de fichier .TXT
    Bonjour,

    je suis en train de développer une application en C# sur le framework 3.5, donc en 3.0. Cette application a pour but d'être une tache planifier, tous les jours elle doit récupérer dans un dossier tous les TXT puis les trier, concaténer certains entre eux et d'autre par rapport a leur nom. Mon problème est le suivant : j'arrive a récupérer les noms des fichiers a les concaténer mais je voudrais supprimer la 1ere ligne qui existe dans tous les fichiers et ne l'insérer que en début de fichier !!! Ensuite mon second problème est de ne pas insérer 2 fois le même contenu.

    Si quelqu'un a une idée ou des sources cela me serait d'une grande aide je vous en remercie d'avance.

    Cordialement

  2. #2
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Bonjour,

    Voici une solution, tu parse l'ensemble de ton fichier texte et tu stocke chaque ligne dans une variable de type list<string>. A partir de là, tu as le contrôle sur toutes les lignes de ton fichier texte. Du coup, pour supprimer des doublons, tu peux utiliser la méthode Distinct() sur ta liste de type list<string>.

    Tu peux aussi insérer, supprimer et réaliser des requêtes LinQ sur ta liste. Cette solution n'est pas forcément performante car tu load en mémoire tout ton fichier texte, donc tout dépend de la longueur de celui-ci. Mais pour une tâche planifiée, cela me semble pas mal.

    Une fois l'opération terminée, il suffit d'écraser le fichier texte existant par le contenu de ta list de string. Renseigne toi sur LinQ to Object, cela va t'aider

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Par défaut
    Citation Envoyé par Paul Musso Voir le message
    Bonjour,

    Voici une solution, tu parse l'ensemble de ton fichier texte et tu stocke chaque ligne dans une variable de type list<string>. A partir de là, tu as le contrôle sur toutes les lignes de ton fichier texte. Du coup, pour supprimer des doublons, tu peux utiliser la méthode Distinct() sur ta liste de type list<string>.

    Tu peux aussi insérer, supprimer et réaliser des requêtes LinQ sur ta liste. Cette solution n'est pas forcément performante car tu load en mémoire tout ton fichier texte, donc tout dépend de la longueur de celui-ci. Mais pour une tâche planifiée, cela me semble pas mal.

    Une fois l'opération terminée, il suffit d'écraser le fichier texte existant par le contenu de ta list de string. Renseigne toi sur LinQ to Object, cela va t'aider
    Merci pour ta réponse je vais me pencher là dessus as tu des exemples par hasard ?

  4. #4
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Le mieux pour ça, c'est que tu m'envoies en pièce jointe à un post un ou 2 fichiers textes, tu me dis ce que tu veux à peu près et jte renvoie un exemple.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 82
    Par défaut
    Citation Envoyé par Paul Musso Voir le message
    Le mieux pour ça, c'est que tu m'envoies en pièce jointe à un post un ou 2 fichiers textes, tu me dis ce que tu veux à peu près et jte renvoie un exemple.
    Voici le genre de fichier que je dois traiter c'est un exemple :
    il y a 3 fichiers :

    Tout d'abord fichier Anim :

    DIV *R *W;

    Naruto;Dragon Ball Z;EyeShield21;Hajime No ippo; CodeGeas;


    Ensuite le fichier Film :

    DIV *R *W;

    Scarface; The GodFather; LORD OF WAr; RAMBO I; RAMBO II; RAMBO III; L'HOMME SANS AGE;
    Fast and furious; Be Right Back; Casino; Casino Royale;


    Puis le fichier Jeux :

    DIV *R *W;

    Call of Duty; Sims; Counter Strike; Warcraft III; Scarface; GTA I; GTA II;
    GTA III;



    Je veux les concaténer dans un même fichier qui s'appellera Divertissement.txt. Ces fichiers sont dans un dossier " Div " et je voudrais mettre le fichier concaténer "Divertissement.txt" dans un autre dossier "Div_final".

    Et surtout l'étape la plus importante la 1ere ligne "DIV *R *W;" je ne veux la copier qu'une fois. Je veux qu'elle apparaisse que en début du fichier concaténer.
    Biensure la les fichiers font 2 lignes mais normalement il y a au moins 30 lignes voir plus.

    Je sais pas si je suis assez clair pour que tu m'éclaire la dessus en tout cas merci de prendre le temps c'est super sympas

    Cordialement.

  6. #6
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Voici donc un petit 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 Program()
    {
        List<string> listeFichiers = new List<string>()
        {
            "Anim.txt",
            "Film.txt",
            "Jeux.txt"
        };
     
        ConcatFiles(listeFichiers,"concat.txt");
    }
     
    public static void ConcatFiles(List<string> listeFichiers, string p)
    {
        List<String> lignes = new List<string>();
     
        listeFichiers.ForEach(s => ReadFromFile(s,lignes));
        var resultat = (from ligne in lignes select ligne).Distinct().ToList();
     
        resultat.ForEach(s => Console.WriteLine(s));
     
        StreamWriter sWriter = File.CreateText(p);
        resultat.ForEach(s => sWriter.WriteLine(s));
        sWriter.Close();
    }
     
    public static void ReadFromFile(string pFile, List<string> lignes)
    {
        StreamReader sReader;
        string ligne;
     
        sReader = File.OpenText(pFile);
        ligne = sReader.ReadLine();
     
        while (ligne != null)
        {
            lignes.Add(ligne);
            ligne = sReader.ReadLine();
        }
        sReader.Close();
    }
    Je part du principe que les fichiers textes sont à coté de l'exe. A toi de modifier les chemins.

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

Discussions similaires

  1. Concaténer 2 fichiers txt sous SAS avec retour chariot
    Par valboubou dans le forum SAS Base
    Réponses: 2
    Dernier message: 03/02/2014, 16h52
  2. Réponses: 1
    Dernier message: 24/08/2013, 21h58
  3. Concaténer des fichiers txt avec script shell Unix
    Par tsivery dans le forum Shell et commandes POSIX
    Réponses: 1
    Dernier message: 12/01/2011, 14h39
  4. Réponses: 3
    Dernier message: 28/05/2008, 16h30
  5. Comment concaténer deux fichiers *.txt ?
    Par thomcat dans le forum Général VBA
    Réponses: 11
    Dernier message: 11/04/2008, 23h47

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