当前位置: 首页 > 编程语言 > C#

快速比较两个大文本文件的内容Share

时间:2023-04-11 00:24:49 C#

快速比较两个大文本文件的内容我基本上做的是比较两个大文本文件,如果匹配写出一个字符串,我写了这个,但是它很慢。我希望你们有更好的想法。在下面的示例中,我正在比较collect[3]splitfound[0]string[]collectionlist=File.ReadAllLines(@"C:found.txt");string[]foundlist=File.ReadAllLines(@"C:collection_export.txt");foreach(在foundlist中找到的字符串){string[]spltifound=found.Split('|');stringmatchfound=spltifound[0].Replace(".txt","");foreach(字符串在集合列表中收集){string[]splitcollect=collect.Split('\');stringmatchcollect=splitcollect[3].Replace(".txt","");如果(matchcollect==matchfound){结束++;longfinaldest=(开始-结束);Console.WriteLine(finaldest);File.AppendAllText(@"C:copy.txt","copy""+collect+"""C:\OUT\"+spltifound[1]+"\"+spltifound[0]+".txt"n");休息;抱歉那些含糊不清的人,我想做的只是简单地说,如果一个文件中的某些内容存在于另一个文件中,则写出一个字符串(字符串无关紧要,只需找到两者比较的时间)。collectionlist是这样的:apple|farmfoundlist是这样的C:oxhorseturtle.txtC:oxpigapple.txt我正在做的是从collectionlist中取出apple并在foundlist中找到包含apple的行。然后写出一个基本的windows复制批处理文件。对困惑感到抱歉。回答(所有贷款给Slaks)string[]foundlist=File.ReadAllLines(@"C:found.txt");varcollection=File.ReadLines(@"C:collection_export.txt").ToDictionary(s=>s.Split('|')[0].Replace(".txt",""));使用(varwriter=newStreamWriter(@"C:Copy.txt")){foreach(stringfoundinfoundlist){string[]splitFound=found.Split('\');字符串matchFound=Path.GetFileNameWithoutExtension(found);字符串收集线;如果(collection.TryGetValue(matchFound,outcollectedLine)){string[]collectlinesplit=collectedLine.Split('|');结束++;longfinaldest=(开始-结束);Console.WriteLine(finaldest);writer.WriteLine("copy""+found+"""C:\O\"+collectlinesplit[1]+"\"+collectlinesplit[0]+".txt"");}}}例如:varcollection=File.ReadLines(@"C:found.txt").ToDictionary(s=>s.Split('\')[3].Replace(".txt",""));使用(varwriter=newStreamWriter(@"C:Copy.txt")){foreach(stringfoundinfoundlist){stringsplitFound=found.Split('|');stringmatchFound=Path.GetFileNameWithoutExtension(found)stringcollectedLine;如果(collection.TryGetValue(matchFound,collectedLine)){end++;longfinaldest=(开始-结束);Console.WriteLine(finaldest);writer.WriteLine("copy""+collectedLine+"""C:\OUT\"+splitFound[1]+"\"+spltifound[0]+".txt"");首先,我建议规范化两个文件,然后将其中一个放入一个集合中。这使您可以快速测试特定行是否存在,并将复杂度从O(n*n)降低到O(n)。此外,不应在每次写入一行时打开和关闭文件:File.AppendAllText(...);//这会导致文件被打开和关闭。在操作开始时打开输出文件一次,向其中写入行,然后在写入所有行后关闭它。您有一个笛卡尔积,因此有必要对一侧进行索引而不是进行冗长的线性搜索。从文件中提取键并使用Set或SortedList数据结构来保存它们。这将使查找更快。(你的整体算法会是O(NlgN)而不是O(N**2))以上是C#学习教程:快速比较两个巨大文本文件的内容分享所有内容,如果对大家有用以及需要了解更多C#学习教程,希望大家多多关注-本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: