3

ディレクトリ内のすべてのタブ区切りテキスト ファイルを 1 つの巨大なテキスト ファイルにマージしたいと考えています。ファイルにはヘッダーがなく、すべてのファイルの列はすべて互いに適切に配置されているため、フォーマットの一貫性の問題について心配する必要はないと仮定しましょう。

すべてのファイルを特定の順序でステッチ/結合/マージする必要はありません。

動作する私のコードは次のとおりです。

    string[] array = Directory.GetFiles(@"C:\MergeThis", "*.txt");

    System.Text.StringBuilder sb = new System.Text.StringBuilder();

    for (int nCount = 0; nCount <= array.Count(); nCount++)
    {
        sb.Append(System.IO.File.ReadAllText(array[nCount])); 
    }

    string output = sb.ToString();    

    string outputFilePath = @"C:\MERGED DATA.txt";
    System.IO.File.WriteAllText(outputFilePath, output);

私の質問は..これを行うためのより良い/より速い/より簡潔な方法はありますか?

4

1 に答える 1

6

それがあなたのものより速いかどうかはわかりませんが、n8wrlの回答で提供されている解決策は次のとおりです

using (var output = File.Create("output"))
{
    foreach (var file in new[] { "file1", "file2" })
    {
        using (var input = File.OpenRead(file))
        {
            input.CopyTo(output);
        }
    }
}

注:- Stream.CopyTo メソッド.Net 4.0の機能です。

于 2013-10-05T15:17:20.877 に答える