Comment créer une fonction de comparer des fichiers dans Visual C#

Traductions disponibles Traductions disponibles
Numéro d'article: 320348 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article étape par étape explique comment comparer deux fichiers pour vérifier si leur contenu est identiques. Cette comparaison recherche au contenu de deux fichiers, pas aux noms de fichiers, magasins, dates, heures ou autres attributs.

Cette fonctionnalité est semblable à le MS-DOS basé Fc.exe utilitaire qui est inclu avec différentes versions de Microsoft Windows et MS-DOS de Microsoft et avec certains outils de développement.

Le code exemple décrit dans cet article effectue une comparaison octet par octet jusqu'à ce qu'il trouve une incompatibilité ou il atteint la fin du fichier. Le code effectue également deux vérifications simples pour augmenter l'efficacité de la comparaison :
  • Si les deux fichier de point de références au même fichier, les deux fichiers doivent être égales.
  • Si la taille des deux fichiers n'est pas la même, les deux fichiers ne sont pas les mêmes.

Pour créer l'exemple

  1. Créez un nouveau projet d'application Windows de Visual C#. Par défaut, Form1 est créé.
  2. Ajoutez deux contrôles zone de texte à l'écran.
  3. Ajouter un bouton de commande à l'écran.
  4. Dans le menu Affichage , cliquez sur code .
  5. Ajoutez l'instruction USING suivante à la classe Form1 :
    using System.IO;
    					
  6. Ajoutez la méthode suivante à la classe Form1 :
    // This method accepts two strings the represent two files to 
    // compare. A return value of 0 indicates that the contents of the files
    // are the same. A return value of any other value indicates that the 
    // files are not the same.
    private bool FileCompare(string file1, string file2)
    {
         int file1byte;
         int file2byte;
         FileStream fs1;
         FileStream fs2;
    
         // Determine if the same file was referenced two times.
         if (file1 == file2)
         {
              // Return true to indicate that the files are the same.
              return true;
         }
                   
         // Open the two files.
         fs1 = new FileStream(file1, FileMode.Open);
         fs2 = new FileStream(file2, FileMode.Open);
              
         // Check the file sizes. If they are not the same, the files 
            // are not the same.
         if (fs1.Length != fs2.Length)
         {
              // Close the file
              fs1.Close();
              fs2.Close();
    
              // Return false to indicate files are different
              return false;
         }
    
         // Read and compare a byte from each file until either a
         // non-matching set of bytes is found or until the end of
         // file1 is reached.
         do 
         {
              // Read one byte from each file.
              file1byte = fs1.ReadByte();
              file2byte = fs2.ReadByte();
         }
         while ((file1byte == file2byte) && (file1byte != -1));
         
         // Close the files.
         fs1.Close();
         fs2.Close();
    
         // Return the success of the comparison. "file1byte" is 
         // equal to "file2byte" at this point only if the files are 
            // the same.
         return ((file1byte - file2byte) == 0);
    }
    					
  7. Collez le code suivant de l'événement Click du bouton de commande :
    private void button1_Click(object sender, System.EventArgs e)
    {
       // Compare the two files that referenced in the textbox controls.
       if (FileCompare(this.textBox1.Text, this.textBox2.Text))
          {
             MessageBox.Show("Files are equal.");
          }
       else
          {
             MessageBox.Show("Files are not equal.");
          }  
    } 
    					
  8. Enregistrer, puis exécutez l'exemple.
  9. Fournir les chemins d'accès complets aux deux fichiers dans les zones de texte, puis cliquez sur le bouton de commande.

Références

Pour plus d'informations, reportez-vous au adresse aux sites Web de Microsoft aux adresses suivantes :
Espace de noms System.IO
(http://msdn2.microsoft.com/en-us/library/system.io(vs.71).aspx)
Accès de fichier dans la classe FileStream
(http://msdn2.microsoft.com/en-us/library/Aa903246(VS.71).aspx)

Propriétés

Numéro d'article: 320348 - Dernière mise à jour: lundi 26 novembre 2007 - Version: 1.6
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C# .NET 2002 Initiation
  • Microsoft Visual C# 2005 Express Edition
Mots-clés : 
kbmt kbhowtomaster kbio KB320348 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 320348
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com