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

时间:2011-04-08 14:08:00

标签: c#

我有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()

的问题

3 个答案:

答案 0 :(得分:1)

试试这个

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);
            }
        }
    }

答案 1 :(得分:0)

获取您想要阅读的文件名的数组或列表。

我只是向您展示实施的逻辑。您可以以适当的方式对其进行编码。

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

}

答案 2 :(得分:0)

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

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