将数据插入文本文件

时间:2010-12-09 17:59:36

标签: c# file-io

我想在文本文件的某些位置插入数据,而不实际覆盖现有数据。我有两个文本文件。 “one.txt”文件有1000行,“two.txt”文件有10000行。我想阅读“one.txt”文件内容并插入前两行“two.txt”文件内容(将“one.txt”的内容附加到“two.txt”的开头)。

标准:

  • 最低代码。
  • 减少内存消耗(不考虑编程语言)
  • 效果(将根据文件大小考虑)。

3 个答案:

答案 0 :(得分:4)

只需为第一个文件打开一个流读取器,为第二个文件打开一个流编写器(在追加模式下)。当您从第一个文件中读取前1000行时,将它们插入第二个文件。

这样的事情:

StreamReader sr = new StreamReader("one.txt");
StreamWriter sw = new StreamWriter("two.txt", true);  //true for append
index i = 0;
while (i < 1000) {
     sw.WriteLine(sr.ReadLine());
     i++;
}

您可能想要检查StreamReader上的文件结尾,但这会给您一般的想法......

基于OP中的新信息:

您可以使用相同类型的方法,但只需创建一个全新的文件,从第一个文件中读取数据,然后从第二个文件中读取数据。一旦它进入新文件,替换原来的“two.txt”。

答案 1 :(得分:3)

如果你只需要这样做一次,这里有一些代码可以做你想要的。我没有编译,但我相信没有问题。

string[] linesOne = File.ReadAllLines(pathToFile1);
string[] linesTwo = File.ReadAllLines(pathToFile2);

List<string> result = new List<string>();
for(int i=0;i<1000;i++)
{
   result.Add(linesOne[i]);
}
result.AddRange(linesTwo);

File.WriteAllLines(pathToFile2, result);

希望这能让你开始。

鲍勃

答案 2 :(得分:3)

如果您不限于c#,则可以从Windows命令行执行以下操作:

copy one.txt + two.txt three.txt

这将创建您想要的文件,但它将被称为three.txt。如果你必须在two.txt中使用它,你可以先将two.txt重命名为其他内容,然后将该副本附加为two.txt作为第三个parm。