Как добавить строку/текст в начало файла в C# и .Net

Задача: добавить текст в начало текстового файла из C#. Стандартные функции добавляют текст в конец файла. Судя по всему законного способа добавления строки в начало не существует. Так что придется загрузить весь файл в память, добавить в начало искомую строку и перезаписать исходный файл. Максимальный размер строки в C# - 2 147 483647 символов, в случае больших файлов главной проблемой будет скорее требуемое количество памяти, в таком случае можно использовать временные файлы. Для решения задачи используем классы StreamReader и StreamWriter. В данном примере файл сохраняется в кодировке Win-1251 для совместимости с корпоративными программами.

FileInfo someTextFileInfo = new FileInfo(someTextFilePathStr);


StreamReader someTextFileReader = new StreamReader(someTextFileInfo.OpenRead(), Encoding.GetEncoding("windows-1251"));

string someTextFileContentStr = "";
while (someTextFileReader.Peek() != -1)
{
    someTextFileContentStr = someTextFileReader.ReadToEnd();
}
someTextFileReader.Close();


string updatedFileStr = "Пусть лучше бизнесмены ведут свое дело честно, чем отдают часть сверхприбыли на благотворительность. Теодор Рузвельт" + "\r\n\r\n" + someTextFileContentStr;

StreamWriter someTextFileStreamWriter = new StreamWriter(someTextFilePathStr, false, Encoding.GetEncoding("windows-1251"));
someTextFileStreamWriter.Write(someTextFileFileStr);

someTextFileStreamWriter.Flush();
someTextFileStreamWriter.Close();

Комментарии

Как добавить строку/текст в начало файла в C# и .Net — Комментарии (11)

  1. предположим есть файл 1.тхт:
    11111111
    22222222
    33333333
    44444444
    необходимо скопировать в 2.тхт строку 3 и 4. И удалить их из файла 1.тхт

    • string[] ss = File.ReadAllLines(@"e:\Progs\VisualC#\WFAWithClass\WithClass\WithClass\bin\Debug\Text\16.01.2012.log");

      int cycle = 1;
      int chunksize = 2; //кол строк в будущем файле

      var chunk = ss.Take(chunksize);
      var rem = ss.Skip(chunksize);

      while (chunk.Take(1).Count() > 0)
      {
      string filename = "file" + cycle.ToString() + ".txt";
      using (StreamWriter sw = new StreamWriter(filename))
      {
      foreach (string line in chunk)
      {
      sw.WriteLine(line);
      }
      }
      chunk = rem.Take(chunksize);
      rem = rem.Skip(chunksize);
      cycle++;
      }

    • فایل هایی که برای دانلود در پوشه dlc Ú§˜Â˜Â°Ã˜ÂÃï´ØªÛŒÙ† خیلی کمتر اون چیزی هست که در عکس مشاهده میشه اگر میشه بقیش رو برای دانلود بزارید ( البته اگر به Time out شدن هنگام وصل شدن به سرور ربط داره) ممنون.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>