有人能证明文件是如何被检查重复的行,然后任何重复被删除或者覆盖现有文件,或创建一个新的文件与重复的行删除C# - 一个文本文件中删除重复的行
4
A
回答
10
如果你使用.NET4那么你可以使用的File.ReadLines
和File.WriteAllLines
组合:
var previousLines = new HashSet<string>();
File.WriteAllLines(destinationPath, File.ReadLines(sourcePath)
.Where(line => previousLines.Add(line)));
它的功能与LINQ的Distinct
方法几乎相同,但有一个重要区别:Distinct
的输出不能保证与输入序列的顺序相同。明确地使用HashSet<T>
确实提供了这种保证。
1
2
File.WriteAllLines(topath, File.ReadAllLines(frompath).Distinct().ToArray());
编辑:修改.NET 3.5
1
如何文件的大都是我们讨论的工作?
一种策略可能是逐行读取一行,并将其加载到数据结构中,以便轻松检查现有项目,如Hashset<int>
。我知道我可以可靠地使用GetHashCode()对文件的每个字符串行进行散列(内部用于检查字符串相等性 - 这是我们想要确定重复项),并检查已知散列。所以,像
var known = new Hashset<int>();
using (var dupe_free = new StreamWriter(@"c:\path\to\dupe_free.txt"))
{
foreach(var line in File.ReadLines(@"c:\path\to\has_dupes.txt")
{
var hash = line.GetHashCode();
if (!known.Contains(hash))
{
known.Add(hash);
dupe_free.Write(line);
}
}
}
或者,你可以利用的LINQ的Distinct()
方法,并做到这一点的一条线,作为Blindy建议:
File.WriteAllLines(@"c:\path\to\dupe_free.txt", File.ReadAllLines((@"c:\path\to\has_dupes.txt").Distinct().ToArray());
+0
@LukeH对,这就是为什么我的主要答案是读写他们在手写循环;哈希集是一个便宜的查找,并与gethashcode它保证正确的顺序和唯一性。 –
1
// Requires .NET 3.5
private void RemoveDuplicate(string sourceFilePath, string destinationFilePath)
{
var readLines = File.ReadAllLines(sourceFilePath, Encoding.Default);
File.WriteAllLines(destinationFilePath, readLines.Distinct().ToArray(), Encoding.Default);
}
相关问题
- 1. 从文本文件中删除空行和重复的行
- 2. 删除一个文本文件在C#中的第一行
- 3. C++删除文件中的文本行
- 4. 删除文本文件中的重复行?
- 5. c#代码删除文本文件中的重复单词
- 6. 删除CSV文件中的重复行
- 7. 删除在文本文件中的非重复的行
- 8. 从perl中的多个文本文件中删除重复项?
- 9. 从C#中的文本文件中删除带有时间戳的重复行
- 10. 批处理从文本文件中删除重复的行
- 11. 如何从文本文件中删除重复的行
- 12. 从文本文件中删除行重复的列ubuntu
- 13. 删除文本文件中的重复行
- 14. 从另一个文件中的文本文件中删除行
- 15. 使用C删除文件中的所有重复行C
- 16. 搜索和删除一个文件中重复条目的行
- 17. 删除列中的重复文本
- 18. 从BIG文本文件中删除重复文件
- 19. C从文本文件中删除第一行而不重写文件
- 20. 从文本文件中删除一行?
- 21. 从文本文件中删除一行
- 22. 从C#中的文本文件中删除一行#
- 23. 删除重复的文件
- 24. 删除重复文本
- 25. 删除文本行和重写文件
- 26. 比较2个文件并删除重复行只有一次
- 27. PHP删除(有条件的)文本中的重复行
- 28. C#:删除Txt文件中的一行
- 29. 从文本文件中删除这两个重复项(不只是重复项)?
- 30. 删除Textarea中的重复文本
@Felice Pollano没有伴侣,除非我一个28岁的学生:D – Michael
好的,但无论如何,你要求完成一项工作... –