我有2个文件文件A和文件B如何在文件A上复制第30行并将其粘贴到文件B中第30行的顶部我可以在C#中执行此操作吗?
答案 0 :(得分: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);
这假设您使用的是.NET 4及其惰性File.ReadLines
方法。如果不是,最简单的方法是使用File.ReadAllLines
两次将两个文件完全读入内存:
string[] linesFromA = File.ReadAllLines("fileA.txt");
string[] linesFromB = File.ReadAllLines("fileB.txt");
linesFromB[29] = linesFromA[29];
File.WriteAllLines("fileC.txt", linesFromB);
肯定有更多高效的方法,但除非我有任何理由需要更高效的方法,否则我会采用上述方法。
答案 1 :(得分: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);
}
}