将文本复制到特定行

时间:2016-06-07 12:35:58

标签: c#

我没理解为什么它不起作用.. 错误显示为newArraylist (line 13); newSreamReader (line 14, 24)   不存在。 任何帮助将不胜感激。

using System;
using System.IO;
using System.Collections;
namespace InsertLineInTextFile
{
    class Program
    {
        static void Main(string[] args)
        {
            string strTextFileName = "file.txt";
            int iInsertAtLineNumber = 2;
            string strTextToInsert = "Amudha";
            ArrayList lines = new ArrayList();
            StreamReader rdr = new StreamReader(strTextFileName);
            string line;
            while ((line = rdr.ReadLine()) != null) lines.Add(line);
            rdr.Close();
            if (lines.Count > iInsertAtLineNumber) lines.Insert(iInsertAtLineNumber, strTextToInsert);

            else
                lines.Add(strTextToInsert);
            StreamWriter wrtr = new StreamWriter(strTextFileName);
            foreach (string strNewLine in lines) wrtr.WriteLine(strNewLine);
            wrtr.Close();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

首先,你必须考虑你将要实现的目标; 反对engeniering (唉!)说

  

fileName 文件的 iInsertAtLineNumber 行插入 strTextToInsert   (如果文件太短,则添加文本)

然后实施:

using System;
using System.Collections.Generic;
using System.IO; 
using System.Linq;

...
string fileName = "file.txt";
int iInsertAtLineNumber = 2;
string strTextToInsert = "Amudha";

List<String> lines = File
  .ReadLines(fileName)
  .ToList();

if (lines.Count > iInsertAtLineNumber)
  lines.Insert(iInsertAtLineNumber, strTextToInsert);
else
  lines.Add(strTextToInsert);

File.WriteAllLines(fileName, lines);

请不要在问题中使用过时的ArrayList,而应使用List<T>List<String>)。与File.ReadLines / File.WriteAllLines相比,StreamReaderStreamWriter通常可读更易于维护