C# 复制文本文件c中的行号#
我有两个文件文件A和文件B如何需要复制文件A上的第30行并将其粘贴到文件B中第30行的顶部我可以用C#来完成吗?这里有一个非常简单的方法,假设文件B足够小,可以读入内存: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
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仍然需要很小。也将包括其他解决方案。。。