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.
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 .
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.
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 ?
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]);
Modifié le 9 avril 2018 à 14:54
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 .