内の重複行を削除し、誰かがファイルが重複行がチェックされ、その後、任意の重複が削除されているいずれかの既存のファイルを上書きする方法を示し、または重複行を使用して新しいファイルを作成することができますがの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のmmap
- 2. C++テキストファイルI/O
- 3. Cでのテキストファイルのマージ
- 4. C++テキストファイル、中国語
- 5. Cテキストファイルを読む
- 6. テキストファイルのデータをC++でクリア
- 7. C#:1つのテキストファイルの* contents *を別のテキストファイルに追加する
- 8. Objective Cでテキストファイルを読む
- 9. C++でテキストファイルを開く
- 10. テキストファイルをcで逆読み
- 11. C++でテキストファイルを読む
- 12. CSVへのテキストファイルの解析C#
- 13. 読むテキストファイルとコンポーネントのiPhoneのObjective-C
- 14. C#:テールのようなテキストファイルのプログラム
- 15. テキストファイルの列を読む賢明なC++
- 16. Cのテキストファイルを反転する
- 17. テキストファイルからC#スクリプトへの変数
- 18. テキストファイルの追加とクリアWebフォームC#
- 19. テキストファイルのトークン化と解析(意思決定リストASCIIテキストファイルの編集)目的C
- 20. C#で大きなテキストファイルを扱う
- 21. C#とテキストファイルを型付きデータセット
- 22. C# - クラスとしてテキストファイルをロード
- 23. C#でテキストファイルを保存する
- 24. Cでテキストファイルを使用して認証
- 25. C#でテキストファイルを解析する方法
- 26. C#DataSetをテキストファイルにエクスポートする
- 27. テーブルデータをテキストファイルにエクスポートする+ C#+ SQL Server
- 28. C++ヘルプ...テキストファイルを更新しますか?
- 29. テキストファイルから1行ずつ読むC++
- 30. テキストファイルを参照するVisual Studio C#
@Felice Pollanoませメイトを、私はしない限り、 28歳の学生:D – Michael
大丈夫ですが、とにかくあなたは仕事を遂行するように求めています... –