你目前正处于脱机状态,正在等待 Internet 重新连接

如何在 Visual C# 创建一个文件比较函数

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 320348
为这篇文章的一个 Microsoft Visual Basic.net 版本,请参阅 320346

下面的 Microsoft.net 框架类库命名空间引用这篇文章:
  • System.IO

本任务中

概要
本文分步介绍说明如何比较两个文件,以查看其内容是否相同。这种比较会查看不在文件名称、 位置、 日期、 时间,或其他属性在两个文件的内容。

此功能是基于 ms-dos 的 Fc.exe 实用工具与各种版本的 Microsoft Windows 和 Microsoft MS-DOS 和某些开发工具中包含相似的。

本文所述将示例代码执行逐字节比较,直到它找到一个不匹配或到达文件结尾。该代码还执行两个简单的检查,以提高效率的比较:
  • 如果两个相同的文件的文件引用点,这两个文件必须相等。
  • 如果两个文件的大小不是相同,这两个文件都不相同。
back to the top

创建示例

  1. 创建一个新的 Visual C# Windows 应用程序项目。默认状态下,创建 Form1。
  2. 将两个文本框控件添加到窗体。
  3. 将命令按钮添加到窗体。
  4. 视图 菜单上单击 代码
  5. 将以下 USING 语句添加到 Form1 类:
    using System.IO;					
  6. 将下面的方法添加到 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. 将以下代码粘贴到命令按钮的 Click 事件中:
    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. 保存并运行该示例。
  9. 提供到在的文本框中的两个文件完整路径,然后单击命令按钮。
back to the top
参考
有关详细的信息,请访问以下 Microsoft 网站: back to the top

警告:本文已自动翻译

属性

文章 ID:320348 - 上次审阅时间:11/26/2007 02:07:26 - 修订版本: 1.6

Microsoft Visual C# .NET 2002 标准版, Microsoft Visual C# 2005 Express Edition

  • kbmt kbhowtomaster kbio KB320348 KbMtzh
反馈