C# 将文件与20个其他文件进行比较,以计算匹配数
我有20个文件,我想一个接一个地与master.txt文件进行比较,如果有任何匹配,程序会给出两个文件之间的匹配总数,我尝试使用以下代码:C# 将文件与20个其他文件进行比较,以计算匹配数,c#,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
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);
}
}
}
}
我在向文件传递多个文件路径时遇到问题。ReadAllLines()获取要读取的文件名数组或列表 我只是向您展示要实现的逻辑。您可以以适当的方式对其进行编码
string[] mastercontent = null;
foreach(string file in filenames)
{
mastercontent += File.ReadAllLines(file);
}
在外部级别放置另一个循环或将其提取到另一个函数/方法“CompareWithMaster(strign fileName)”,您可以将文件名列表传递给它 您可能希望首先进行一些优化(可能检查文件大小和内容)试试这个
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”};
List allLines=新列表();
foreach(listOfFiles中的var路径)
{
AddRange(File.ReadAllLines(path));
}
//allLines现在包含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[]listOfFiles={“file1.txt”,“file2.txt”};
Dictionary allLines=新字典();
foreach(listOfFiles中的var路径)
{
foreach(文件中的var行.ReadAllLines(路径))
{
如果(!allLines.ContainsKey(行))
{
添加(行,字符串,空);
}
}
}