复制文本文件c#中的行号

时间:2012-07-09 10:53:47

标签: c# text-files

我有2个文件文件A和文件B如何在文件A上复制第30行并将其粘贴到文件B中第30行的顶部我可以在C#中执行此操作吗?

2 个答案:

答案 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);
            }
        }