0

ファイル A とファイル B の 2 つのファイルがあります。ファイル A の 30 行目をコピーして、ファイル B の 30 行の上に貼り付けるには、C# でこれを行うことができますか?

4

2 に答える 2

6

ファイル B がメモリに読み込むのに十分小さいと仮定すると、次のような非常に簡単な方法があります。

string lineFromA = File.ReadLines("fileA.txt").Skip(29).First();
string[] linesFromB = File.ReadAllLines("fileB.txt");
linesFromB[29] = lineFromA;
File.WriteAllLines("fileC.txt", linesFromB);

File.ReadLinesこれは、遅延メソッドで .NET 4 を使用していることを前提としています。そうでない場合、最も簡単な方法は、 2 回使用して、両方のファイルを完全にメモリに読み込むことです。File.ReadAllLines

string[] linesFromA = File.ReadAllLines("fileA.txt");
string[] linesFromB = File.ReadAllLines("fileB.txt");
linesFromB[29] = linesFromA[29];
File.WriteAllLines("fileC.txt", linesFromB);

確かにもっと効率的なアプローチがありますが、より効率的なアプローチが必要な理由がない限り、上記を使用します。

于 2012-07-09T10:55:45.187 に答える
0

書き込み側にストリームライターを使用すると、多くのメモリを使用せず、より大きなファイルにも使用できるルーチンが得られます。

        string lineFromA = File.ReadLines("fileA.txt").Skip(29).First();
        using (var fileC = File.AppendText("fileC.txt"))
        {
            int i = 0;
            foreach (var lineFromB in File.ReadLines("fileB.txt"))
            {
                i++;
                fileC.WriteLine(i != 30 ? lineFromB : lineFromA);
            }
        }
于 2012-07-09T11:52:36.393 に答える