内の重複行を削除し、誰かがファイルが重複行がチェックされ、その後、任意の重複が削除されているいずれかの既存のファイルを上書きする方法を示し、または重複行を使用して新しいファイルを作成することができますがの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
メソッドとほぼ同じように機能しますが、重要な違いが1つあります。Distinct
の出力は、入力シーケンスと同じ順序であるとは限りません。 HashSet<T>
を明示的に使用すると、この保証が提供されます。
1
2
File.WriteAllLines(topath, File.ReadAllLines(frompath).Distinct().ToArray());
編集:.NET 3.5
1
で動作するように変更され、我々はどのようにファイルの大きなを話していますか?
1つの戦略は、一度に1つの行を読み込み、Hashset<int>
などの既存の項目を簡単にチェックできるデータ構造にロードすることです。私はGetHashCode()を使ってファイルの各文字列を確実にハッシュすることができることを知っています(文字列の等価性をチェックするために内部で使用されています)。 Blindyが提案ように、
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()
方法を利用せず、1行でそれを行うことができます。
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. C#のテキストファイルが
- 2. テキストファイルのCのmmap
- 3. テキストファイルのC#検索
- 4. Cプログラミング - テキストファイル
- 5. C++テキストファイルI/O
- 6. C++でのテキストファイルのストリーミング
- 7. Cでのテキストファイルのマージ
- 8. Cのテキストファイルのヘッダーをスキップ
- 9. Cテキストファイルを読む
- 10. C++テキストファイル、中国語
- 11. 単純なデータベースのテキストファイル(C++)
- 12. テキストファイルのデータをC++でクリア
- 13. C#:1つのテキストファイルの* contents *を別のテキストファイルに追加する
- 14. c# - テキストファイルから辞書
- 15. Objective Cでテキストファイルを読む
- 16. C++でテキストファイルを開く
- 17. テキストファイルを使用してC#?
- 18. C++でテキストファイルを読む
- 19. テキストファイルをcで逆読み
- 20. C#:テールのようなテキストファイルのプログラム
- 21. 読むテキストファイルとコンポーネントのiPhoneのObjective-C
- 22. 文字列のリストにC#UWPのテキストファイル
- 23. C - 構築後のfopenテキストファイル - OpenWrtの - opkg
- 24. CSVへのテキストファイルの解析C#
- 25. テキストファイル検索、コンボボックスとのDataGridViewのC#
- 26. テキストファイルの追加とクリアWebフォームC#
- 27. テキストファイルからC#スクリプトへの変数
- 28. これは私のテキストファイルであるC++
- 29. DataGridViewからWindowsフォームのテキストファイルへC#
- 30. C++ビルダーteeChartインポートのタイムタグをテキストファイル
@Felice Pollanoませメイトを、私はしない限り、 28歳の学生:D – Michael
大丈夫ですが、とにかくあなたは仕事を遂行するように求めています... –