将文件与其他20个文件进行比较,以计算匹配的次数

本文关键字:文件 计算 比较 其他 20个 | 更新日期: 2023-09-27 17:49:34

我有20个文件,我想将它与master.txt文件一个接一个地进行比较,如果有任何匹配,程序会给我两个文件之间的匹配总数,我尝试使用以下代码:

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
    static void Main()
    {
        int found;
        int count = 0;
        string[] content = File.ReadAllLines(@"C:'master.txt");
        string[] mastercontent = File.ReadAllLines(**ineed to pass more than filename** );
        foreach (string con in content)
        {
            if (mastercontent.Contains(con))
            {
                found = 1;
                count = count + found;
            }
            // else
            // { 
            //Console.WriteLine("no match");
            // }
            Console.WriteLine(count);
        }
    }
}
}

我面临传递多个文件路径到file . readalllines ()

将文件与其他20个文件进行比较,以计算匹配的次数

的问题

试试这个

string[] listOfFiles = {"file1.txt","file2.txt"};
List<string> allLines = new List<string>();
foreach (var path in listOfFiles)
{
    allLines.AddRange(File.ReadAllLines(path));
}
//allLines now contains the lines from all files in listOfFiles

或者使用字典来更快地查找

    string[] listOfFiles = {"file1.txt","file2.txt"};
    Dictionary<string,string> allLines = new Dictionary<string,string>();
    foreach (var path in listOfFiles)
    {
        foreach (var line in File.ReadAllLines(path))
        {
            if (!allLines.ContainsKey(line))
            {
                allLines.Add(line,string.Empty);
            }
        }
    }

取要读取的文件名的数组或列表

我只是向您展示要实现的逻辑。你可以用适当的方式编码。

string[] mastercontent = null;
foreach(string file in  filenames)
{
 mastercontent += File.ReadAllLines(file);
}

在外层放置另一个循环或将其提取到另一个函数/方法' CompareWithMaster(strign fileName)',您可以将文件名列表传递给它。

你可能想先做一些优化(可能检查文件大小和东西)