Как удалить n символов из начала текстового файла в. NET? - PullRequest
3 голосов
/ 21 апреля 2020

Я знаю, что вы можете сделать это, просто перезаписав все содержимое файла с помощью File.WriteAllText или аналогичной функции. Но не похоже, что это эффективный способ удаления пары символов при запуске, особенно если текстовый файл содержит более миллионов символов.

Есть ли способ, которым я могу сделать это, используя какой-нибудь FileStream или другой Функции потоковых классов?

1 Ответ

0 голосов
/ 21 апреля 2020

В зависимости от необходимости, вы можете выполнить Seek () и затем CopyTo () для нового потока.

using (FileStream fs1 = new FileStream(FileName1, FileMode.Open, FileAccess.Read))
{ 
    fs1.Seek(N, SeekOrigin.Begin); // N - number of characters from the beginning
    using (FileStream fs2 = File.Create(FileName2))
        fileStream1.CopyTo(fs2);
}

Чтобы удалить первые строки, выполните

var lines = File.ReadAllLines(FileName1);
File.WriteAllLines(FileName2, lines.Skip(N).ToArray());
...