0

我有 2 个文件文件 A 和文件 B 如何需要复制文件 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);

这假设您使用的是 .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);

肯定有更有效的方法,但除非我有任何理由需要更有效的方法,否则我会选择上述方法。

于 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 回答