C#实现大数据量TXT文本数据快速高效去重

    xiaoxiao2021-03-25  156

    对几千万的TXT文本数据进行去重处理,查找其中重复的数据,并移除。尝试了各种方法,下属方法是目前尝试到最快的方法。以下代码将重复和不重复数据进行分文件存放,提升效率的关键是用到了HashSet。 TextReader reader = File.OpenText(m_dataFilePath); string[] files = new string[2]; files[0] = ROOT_DIR + "不重复数据.txt"; files[1] = ROOT_DIR + "重复数据.txt"; TextWriter writer1 = File.CreateText(files[0]); TextWriter writer2 = File.CreateText(files[1]); string currentLine; int idx = 0; HashSet<string> previousLines = new HashSet<string>(new MyEqualityComparer()); while ((currentLine = reader.ReadLine()) != null) { if ((++idx % 10000) == 0) UpdateInfo("正在比对第 " + idx + " 条数据…"); currentLine = currentLine.TrimEnd(); if (previousLines.Add(currentLine)) { writer1.WriteLine(currentLine); } else { if(m_allSave) writer2.WriteLine(currentLine); } } reader.Close(); writer1.Close(); writer2.Close(); reader.Dispose(); writer1.Dispose(); writer2.Dispose(); 1000万数据的处理时间也就是转瞬之间,试试看? # 1 楼: while ((currentLine = reader.ReadLine()) != null)  这个不是一行一行读取吗,就算不处理里面的逻辑代码 ,光循环完这个都不可能瞬间啊,你这个1000W得循环到猴年马月啊。不知是否有更高效的读取txt的每一行?  像Navicat for SQLite导入txt数据时的处理就相当快瞬间处理完成。  不知道有哪位大神指导如何秒处理记事本的每一样
    转载请注明原文地址: https://ju.6miu.com/read-1739.html

    最新回复(0)