有人能證明文件是如何被檢查重複的行,然後任何重複被刪除或者覆蓋現有文件,或創建一個新的文件與重複的行刪除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
好的,但無論如何,你要求完成一項工作... –