将文件与其他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 ()
试试这个
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)',您可以将文件名列表传递给它。
你可能想先做一些优化(可能检查文件大小和东西)