Comparer le contenu de deux fichier txt(ligne par ligne)

karim91000 Messages postés 5 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 1 avril 2008 - 31 mars 2008 à 20:12
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 - 1 avril 2008 à 14:13
Bonjour,
je veux comparer le contenu de deux fichier1.txt et fichier2.txt pour obtenir le resultat dans un fichier3.txt
j'ai reussi a compter le nombre de ligne par fichier.
mon sousci est de comparer chaque ligne dans le fichier1 avec toutes les lignes du fichier2 si elle existe je fais rien et si elle n'existe pas je dois la copier dans le fichier3 (dans un seul sens).

Merci d'avance pour vos réponses et aides.
(en c# sinon en vbs)
Karim

8 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
31 mars 2008 à 21:21
Si tu veux tu peux le faire en powershell, plus performant que VBS

http://www.microsoft.com/technet/scriptcenter/topics/msh/cmdlets/compare-object.mspx

Bon coding
0
karim91000 Messages postés 5 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 1 avril 2008
31 mars 2008 à 21:50
Merci pour le réponse , mais je cherche vraiment en c#
le pb que j'arrive bien a compter le nombre de ligne de chaque fichier, mon grand souci est de pouvoir comprer le contenu de chaque ligne du fichier 1 avec ttes les lignes du fichier2 .

Karim
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
31 mars 2008 à 22:19
0
karim91000 Messages postés 5 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 1 avril 2008
1 avril 2008 à 09:23
Bonjour nhervagault,
Merci pour les liens mais ca ne marche pas!

voici une partie de mon code pour pouvoir m'aider.

StreamReader fileReader2 = new StreamReader("c:\\fichier2.txt");
   StreamReader fileReader1 = new StreamReader("c:\\fichier1.txt");
   TextWriter fileWriter3 = new StreamWriter("c:\\fichier3.txt");
   while((findLine=fileReader1.ReadLine())!=null)
   {
    ++nb_line;
   }
    //StreamReader fileReader2 = new StreamReader("c:\\eqdw10010.txt");
    //TextWriter fileWriter3 = new StreamWriter("c:\\test3.txt");
   while((findLine2 = fileReader2.ReadLine())!=null)
   {
    ++nb_line2;
   }


   Console.WriteLine("le nombre de ligne file1  est : " +nb_line2);
   Console.WriteLine("le nombre de ligne file2 est : " +nb_line);
   
   fileReader1.Close();
   //fileWriter3.Close();
   fileReader2.Close();
   
   
   //La partie que je ne maitrise pas...en bas
   //comment faire pour comparer chaque ligne du fichier1 avec toute les lignes du fichier2
   //si la lignefichier1 n'existe pas dans le fichier2 je la copier dans fichier3 sinon je fai rien
   
   for (i=0;i<nb_line2;i++)
   //{
    while((findLine=fileReader1.ReadLine())!=null)
    {
     for (i=0;i<nb_line2;i++)
     //findLine4[i]=findLine;


     // if (findLine4[i]!=findLine)
     //{    
      //findLine=fileReader.ReadLine();
      
      fileWriter3.WriteLine(findLine);
     //}
     //else
      //fileWriter3.WriteLine(findLine);
     i++;
    }
   //}
   fileWriter3.Close();
   fileReader.Close();
   //fileWriter3.Close();
   fileReader2.Close();
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
karim91000 Messages postés 5 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 1 avril 2008
1 avril 2008 à 09:30
Bonjour nhervagault,
Merci pour les liens mais ca ne marche pas!

voici une partie de mon code pour pouvoir m'aider.

StreamReader fileReader2 = new StreamReader("c:\\fichier2.txt");
   StreamReader fileReader1 = new StreamReader("c:\\fichier1.txt");
   TextWriter fileWriter3 = new StreamWriter("c:\\fichier3.txt");
   while((findLine=fileReader1.ReadLine())!=null)
   {
    ++nb_line;
   }

   
   while((findLine2 = fileReader2.ReadLine())!=null)
   {
    ++nb_line2;
   }


   Console.WriteLine("le nombre de ligne file1  est : " +nb_line2);
   Console.WriteLine("le nombre de ligne file2 est : " +nb_line);
   
   fileReader1.Close();
   //fileWriter3.Close();
   fileReader2.Close();
   
   
   //La partie que je ne maitrise pas...en bas
   //comment faire pour comparer chaque ligne du fichier1 avec toute les lignes du fichier2
   //si la lignefichier1 n'existe pas dans le fichier2 je la copier dans fichier3 sinon je fai rien
   
   for (i=0;i<nb_line2;i++)
   //{
    while((findLine=fileReader1.ReadLine())!=null)
    {
     for (i=0;i<nb_line2;i++)
     //findLine4[i]=findLine;


     // if (findLine4[i]!=findLine)
     //{    
      //findLine=fileReader.ReadLine();
      
      fileWriter3.WriteLine(findLine);
     //}
     //else
      //fileWriter3.WriteLine(findLine);
     i++;
    }
   //}
   fileWriter3.Close();
   fileReader.Close();
   //fileWriter3.Close();
   fileReader2.Close();
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
1 avril 2008 à 12:26
Peux-tu préciser ton besoin.

Je pense que si tu charges des deux fichiers dans une collection,
et que le troisieme fichier est une collection aussi tu devrais y arriver

Exemple en algo grossier

List<String> contenu1 = chargementFichier(filename1);
List<String> contenu2 = chargementFichier(filename2);

Ensuite

if (contenu1.count == contenu2.count) --> meme nombre de ligne

Ensuite

parcours des collections
foreach (string ligne in contenu1)
{
if (contenu2.contains(ligne)) --> ok
contenu3.add(ligne)
sinon
A toi de gérer je ne connais pas ton besoin

}

ecriturefichierresultat(contenu3, filename3)

Apres si l'ordre est important utilise des sortedcollection

Cette methode, te permet d'etre découpler des fichiers au passage

Bon courage
0
karim91000 Messages postés 5 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 1 avril 2008
1 avril 2008 à 13:23
mon besoin c'est apartir de deux fichier txt (fichier1 et fichier2) de chercher chaque ligne du fichier 1 dans le fichier 2
le permier ponit : fichier1 et fichier 2 ont pas le meme nombre de ligne.
le sens de recherche est important.
le besoin c'est d'obtenir les lignes du fichier1 qu'il n'existe pas dans le fichier2 .

je te remercie pour tes réponses.

Karim
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
1 avril 2008 à 14:13
En utilisant des collections triées ca doit repondre à ton problème.
Aprs tu as peut etre un identifiant sur chaque ligne c'est encore plus simple je pense.
0