Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 复制文本文件c中的行号#_C#_Text Files - Fatal编程技术网

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

C# 复制文本文件c中的行号#,c#,text-files,C#,Text Files,我有两个文件文件A和文件B如何需要复制文件A上的第30行并将其粘贴到文件B中第30行的顶部我可以用C#来完成吗?这里有一个非常简单的方法,假设文件B足够小,可以读入内存: string lineFromA = File.ReadLines("fileA.txt").Skip(29).First(); string[] linesFromB = File.ReadAllLines("fileB.txt"); linesFromB[29] = lineFromA; File.WriteAllLine

我有两个文件文件A和文件B如何需要复制文件A上的第30行并将其粘贴到文件B中第30行的顶部我可以用C#来完成吗?

这里有一个非常简单的方法,假设文件B足够小,可以读入内存:

string lineFromA = File.ReadLines("fileA.txt").Skip(29).First();
string[] linesFromB = File.ReadAllLines("fileB.txt");
linesFromB[29] = lineFromA;
File.WriteAllLines("fileC.txt", linesFromB);
这假设您正在使用.NET4及其惰性方法。如果不是,最简单的方法是使用两次将两个文件完全读入内存:

当然还有更有效的方法,但除非我有任何理由需要一种更有效的方法,否则我会采用上述方法。

这里有一个非常简单的方法,假设文件B足够小,可以读入内存:

string lineFromA = File.ReadLines("fileA.txt").Skip(29).First();
string[] linesFromB = File.ReadAllLines("fileB.txt");
linesFromB[29] = lineFromA;
File.WriteAllLines("fileC.txt", linesFromB);
这假设您正在使用.NET4及其惰性方法。如果不是,最简单的方法是使用两次将两个文件完全读入内存:


当然还有更有效的方法,但除非我有任何理由需要一种更有效的方法,否则我会选择上面提到的方法。

如果你在写端使用streamwriter,你会得到一个不占用大量内存的例程,也可以用于更大的文件

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

如果您将streamwriter用于写入端,则会得到一个不占用大量内存的例程,也可以用于较大的文件

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

到目前为止你试过什么?这是可能的,但在给你一些建议之前,我想看看你迄今为止做了哪些尝试。请更加努力。你迄今为止做了哪些尝试?这是可能的,但在给你一些建议之前,我想看看你迄今为止都做了些什么。请再努力一点。我更喜欢
linesFromB[29]=linesFromA[29]
方法,但都一样;p@leppie:我认为这样做还是很简单的,至少现在我们可以处理一个巨大的文件a,即使文件B仍然需要很小。也将包括其他解决方案…我希望采用
linesFromB[29]=linesFromA[29]
方法,但都是一样的;p@leppie:我认为这样做还是很简单的,至少现在我们可以处理一个巨大的文件a,即使文件B仍然需要很小。也将包括其他解决方案。。。