对几千万的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万数据的处理时间也就是转瞬之间,试试看?
时间: 2024-09-10 04:12:31