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

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

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

你可能感兴趣的:(大数据量)