C# comparer contenu de plusieurs fichiers texte [Résolu]

Signaler
Messages postés
6
Date d'inscription
lundi 9 avril 2018
Statut
Membre
Dernière intervention
12 avril 2018
-
Messages postés
14916
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
25 octobre 2020
-
Bonjour : (console application)
je travaille dans un projet depuis quelques jours
j'ai un dossier contenant des fichiers texte ,si une ligne de ces fichier se répéte 4 fois ou plus dans les autre fichiers je dois l'afficher .
quand j'ai chercher j'ai trouve seulment methode de comparaison entre 2 fichier texte.
Merci d'avance.


2 réponses

Messages postés
14916
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
25 octobre 2020
447
Je ne suis pas sûr d'avoir bien compris
Là dans log3 tu as la ligne
Article : 5895479 innexistant
(ps y'a qu'un n à inexistant)

Et tu veux savoir si cette ligne exactement, est présente au moins 4 fois dans tous les autres fichiers? ou dans au moins 1 autre fichier?
Messages postés
6
Date d'inscription
lundi 9 avril 2018
Statut
Membre
Dernière intervention
12 avril 2018

par exemple je veux trouver cette ligne une seule fois mais dans 4 log différent(Article : 5895479 innexistant) dans log1 ,log2 ,log6 ext..
normalement on peux pas trouver la meme ligne 2 fois dans le méme log j'ai saisi le log 3 manuellement c pour cela j'ai commis cette faute my bad .
Messages postés
14916
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
25 octobre 2020
447
Ok c'est plus simple alors.

Tu commences par charger la liste des fichiers, voir la classe Directory.
Ensuite tu parcours la liste, tu charges dans un dictionnaire en clé le nom du fichier et en valeur le texte entier avec File.GetAllText.

Ensuite pour chaque entrée du dictionnaire, tu splites le textes pour obtenir les lignes et pour chaque ligne tu regardes la valeur des autres entrées du dictionnaires pour savoir si le texte est présent, avec la méthode Contains.
Messages postés
6
Date d'inscription
lundi 9 avril 2018
Statut
Membre
Dernière intervention
12 avril 2018

enfaite je voulais dire c# non pas c my bad
en tout cas merci pour ta réponse
Messages postés
6
Date d'inscription
lundi 9 avril 2018
Statut
Membre
Dernière intervention
12 avril 2018

Bonjour whismeril cv,
j'ai essayer ce code :
foreach (string file in Directory.GetFiles("C:\\Users\\Marouane\\Desktop\\leslogs"))
{
string ligne;
StreamReader sr = new StreamReader(file);
ligne = sr.ReadLine();
}
il m'affiche les ligne qui se répétent aux moin 2 fois
mais j'ai encore besoin d'aide
sinon
j'ai stocke tous les fichier texte dans une variable y'a t'il moyen de compter et afficher les ligne qui se rassemble dans cette variable ?
Messages postés
14916
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
25 octobre 2020
447
C’est possible avec un dictionnaire ou en ecrivant une classe dédiée
Messages postés
6
Date d'inscription
lundi 9 avril 2018
Statut
Membre
Dernière intervention
12 avril 2018

c'est résolu

class Program
{
static void Main(string[] args)
{
List<string> lignes = new List<string>();
foreach(string file in Directory.GetFiles("C:\\Users\\Marouane\\Desktop\\leslogs"))
{
string ligne;
StreamReader sr = new StreamReader(file);
while ((ligne = sr.ReadLine()) != null) {
lignes.Add(ligne);
}
}
List<string> checks = new List<string>();
for(int i = 0; i < lignes.Count; i++) {
string x = lignes[i];
int nbr = 0;
for (int y = i; y < lignes.Count; y++) {
if (lignes[y] == x)
nbr++;
}
if (nbr >= 4) {
if (!checks.Contains(x))
checks.Add(x);
}
}

for (int i = 0; i < checks.Count; i++)
Console.WriteLine(checks[i]);

Console.Read();
}
}
}
Messages postés
14916
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
25 octobre 2020
447