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 :

Comment concaténer toutes les lignes d'un fichier en une seule?


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut Comment concaténer toutes les lignes d'un fichier en une seule?
    Bonjour,

    Je cherche à concaténer toutes les lignes d'un fichier pour ne ressortir qu'une seule ligne de type string. Est ce que vous pouvez m'aider?

    Merci beaucoup

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Pour t'aider, il serait bon que tu nous indiques la manière dont tu "charges" ton fichier et à l'aide de quels objets tu le manipules.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Alors pour ouvrir mon fichier j'utilise le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //Ouverture et lecture du fichier
     
                StreamReader oReadTextStream = new StreamReader (@"D:\final.c");
                string szStringResult;
                int iCounter = 0;
                while ((szStringResult = oReadTextStream.ReadLine ()) != null)
                    {
                        Console.WriteLine("Read line {0} {1}", iCounter, szStringResult);
                        iCounter++;
                    }



    En fait je souhaite concaténer toutes les lignes du fichier pour ensuite envoyer la chaine de caractère dans un fonction qui n'accepte que du string en entrée.

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Citation Envoyé par moiguigui60 Voir le message
    Alors pour ouvrir mon fichier j'utilise le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Ouverture et lecture du fichier
    string monFichier = string.Empty;
                StreamReader oReadTextStream = new StreamReader (@"D:\final.c");
                string szStringResult;
                int iCounter = 0;
                while ((szStringResult = oReadTextStream.ReadLine ()) != null)
                    {
    monFichier += szStringResult ;
                        Console.WriteLine("Read line {0} {1}", iCounter, szStringResult);
                        iCounter++;
                    }

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Donc, maintenant la chaine concaténée est "monfichier"?

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    C'est bon ça fonctionne!
    Merci beaucoup

  7. #7
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    C'est ça.

    Attention, tu n'auras ainsi pas d'espace entre chaque ligne du fichier original dans la string finale.

    Pour cela, il te faudrait quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monFichier += " " + szStringResult;
    (ou passer par un StringBuilder si ton fichier est volumineux).

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    En fait je veux passer mon fichier dans une fonction qui réalise un hash md5, pour cela il faut que je passe mon fichier en string, d'où la concaténation. Tu crois que c'est correct si je procède de cette manière?

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    J'ai une autre question, tout à l'heure le morceau de code que j'avais pour faire la concaténation permettait d'ouvrir un fichier de type texte.
    Si je veux faire la même chose pour un fichier autre je dois procéder pareils?
    Les autres fichiers sont de type binaire?

    Dans ce cas j'ai ça comme code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    FileStream fs = new FileStream(FILE_NAME, FileMode.CreateNew);
     
                // Create the reader for data.
            fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read);
            BinaryReader r = new BinaryReader(fs);
            // Read data from Test.data.
            for (int i = 0; i < 11; i++) 
            {
                Console.WriteLine(r.ReadInt32());
            }
            r.Close();
            fs.Close();

    Merci

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Je ne comprend pas bien pourquoi tu veux lire ligne par ligne puis concaténer, d'autant que dans ce cas ton hash dans ce cas ne prendra pas en compte les retoru chariot (donc ne sera pas "transférable" à une autre entité logicielle).

    Autant lire directement le contenu et appliquer le hash dessus.

    Par exemple, le code suivant (sous réserve que la taille du fichier soit inferieure à MAXINT bytes) :

    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
     
    byte[] md5Hash;
    byte[] buffer = null;
    using (FileStream stream = File.Open("MyFile", FileMode.Open, FileAccess.Read))
    {
    int length = (int)stream.Length;
    buffer = new byte[length];
    int bytesRead = stream.Read(buffer, 0, length);
    if (bytesRead != length)
    {
    // Probleme !
    }
    stream.Close();
    }
    using (HashAlgorithm hasher = new MD5Cng())
    {
    md5Hash = hasher.ComputeHash(buffer);
    }
    Si la longueur est supérieure à MAXINT il suffit juste de boucler sur la méthode Read en décalant l'offset d'écriture du buffer de bytesRead octets.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bah en fait je veux lire ligne par ligne et concaténer parce que je n'arrive pas à passer directement le fichier dans ma fonction pour faire le md5. En réalisant la concaténation j'obtiens une seule chaine que je peux passer dans ma fonction pour réaliser le hash md5.

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par moiguigui60 Voir le message
    Bah en fait je veux lire ligne par ligne et concaténer parce que je n'arrive pas à passer directement le fichier dans ma fonction pour faire le md5. En réalisant la concaténation j'obtiens une seule chaine que je peux passer dans ma fonction pour réaliser le hash md5.
    Ca ne répond pas à ma question : pourquoi lire ligne par ligne ?

    Par ailleurs, les méthodes de hash (que ce soit MD5 ou SHA1) prennent un tableau de bytes en entrée, pas une chaine.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut


    Tu me dis donc qu'on peut passer directement le fichier dans ma fonction md5?
    Personnellement je suis un peu perdu, certains me disent qu'on peut le faire mais j'y arrive pas, et d'autre me disent qu'on ne peut pas. C'est pourquoi j'ai procédé de cette façon.
    Comment faire alors?

  14. #14
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par moiguigui60 Voir le message


    Tu me dis donc qu'on peut passer directement le fichier dans ma fonction md5?
    Personnellement je suis un peu perdu, certains me disent qu'on peut le faire mais j'y arrive pas, et d'autre me disent qu'on ne peut pas. C'est pourquoi j'ai procédé de cette façon.
    Comment faire alors?
    je n'ai jamais dit cela. La méthode de hash prend un tableau de byte pas un fichier.

    As tu examiné le code que j'ai passé ? visiblement non.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Si, j'ai étudié le code que tu m'a passé, je t'en remercie d'ailleurs.
    Cependant je t'avoue que je ne comprends pas tout!Il manque le code pour réaliser le hash md5 non?
    Ce que moi je ne comprends pas c'est que le code que j'ai pour réaliser mon hash md5 accepte en entrée un string, code que j'ai récupéré sur cette adresse:
    http://msdn.microsoft.com/en-us/libr...raphy.md5.aspx

  16. #16
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Je ne comprends pas pourquoi tu tentes de réinventer l'eau tiède.
    Il existe en standard dans le framework un hasher MD5 (que j'utilise dans l'exemple que je te fournis ) alors je ne vois pas pourquoi tu veux réécrire le hash !

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Je vois ce que tu veux, c'est vrai que ça ne parait pas logique!
    Donc via le code que tu m'a donné j'obtiens normalement le md5 de mon fichier c'est bien ça?
    Je l'ai testé mais j'ai une erreur au niveau de la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using (HashAlgorithm hasher = new MD5Cng())
    , j'ai le MD5CNG qui est souligné et qui me dit que le type ou le nom d'espace de noms 'MD5Cng' est introuvable.

    Tu auras remarqué que je ne suis vraiment pas doué!

  18. #18
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Tu as bien mis la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using System.Security.Cryptography;
    en tête de classe ?

    Tu es bien en framework 3.5 ou 4.0 ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  19. #19
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Non je n'ai pas précisé, on m'a obligé à développer en framwork 2.0 pour avoir une compatibilité jusqu'à windows 98. J'ai vraiment l'impression que ça me limite beaucoup.

  20. #20
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Ok, donc tu remplaces :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HashAlgorithm hasher = new MD5Cng())
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MD5 hasher = MD5.Create();
    En précisant bien évidemment le using en question.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/06/2008, 13h07
  2. [XSLT] comment afficher toutes les données d'un fichier xml ?
    Par bwwilly dans le forum XSL/XSLT/XPATH
    Réponses: 19
    Dernier message: 27/06/2007, 16h21
  3. Boucle qui parcourt tout les ligne d'un fichier text
    Par accro-macro dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 10/05/2007, 20h21
  4. Concaténer toutes les lignes d'une colonne
    Par metalcoyote dans le forum Oracle
    Réponses: 6
    Dernier message: 10/05/2006, 15h51
  5. Fusionner toutes les lignes d'un fichier
    Par _Mac_ dans le forum Linux
    Réponses: 2
    Dernier message: 02/12/2005, 14h18

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