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
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
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.
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.
Donc, maintenant la chaine concaténée est "monfichier"?
C'est bon ça fonctionne!
Merci beaucoup
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 :
(ou passer par un StringBuilder si ton fichier est volumineux).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2monFichier += " " + szStringResult;
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?
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
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) :
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.
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); }
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
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.
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
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 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
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
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
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:, j'ai le MD5CNG qui est souligné et qui me dit que le type ou le nom d'espace de noms 'MD5Cng' est introuvable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part using (HashAlgorithm hasher = new MD5Cng())
Tu auras remarqué que je ne suis vraiment pas doué!
Tu as bien mis la ligne :
en tête de classe ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2using System.Security.Cryptography;
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
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.
Ok, donc tu remplaces :
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part HashAlgorithm hasher = new MD5Cng())
En précisant bien évidemment le using en question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MD5 hasher = MD5.Create();
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager