ファイル A とファイル B の 2 つのファイルがあります。ファイル A の 30 行目をコピーして、ファイル B の 30 行の上に貼り付けるには、C# でこれを行うことができますか?
1332 次
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 に答える