Убрать последнюю строку из текстового файла - PullRequest
3 голосов
/ 21 мая 2010

Мне нужно убрать последнюю строку из текстового файла. Я знаю, как открывать и сохранять текстовые файлы в C #, но как бы удалить последнюю строку текстового файла?

Текстовый файл всегда будет иметь разные размеры (у некоторых 80 строк, у некоторых 20).

Может кто-нибудь показать мне, как это сделать?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 21 мая 2010

С небольшим количеством строк вы можете легко использовать что-то вроде этого

string filename = @"C:\Temp\junk.txt";

string[] lines = File.ReadAllLines(filename);
File.WriteAllLines(filename, lines.Take(lines.Count() - 1));

Однако, когда файлы становятся больше, вы можете захотеть передавать и выводить данные с чем-то вроде этого

string filename = @"C:\Temp\junk.txt";
string tempfile = @"C:\Temp\junk_temp.txt";

using (StreamReader reader = new StreamReader(filename))
{                
    using (StreamWriter writer = new StreamWriter(tempfile))
    {
        string line = reader.ReadLine();

        while (!reader.EndOfStream)
        {
            writer.WriteLine(line);
            line = reader.ReadLine();
        } // by reading ahead, will not write last line to file
    }
}

File.Delete(filename);
File.Move(tempfile, filename);
3 голосов
/ 21 мая 2010

Для небольших файлов простой способ (хотя и далеко не самый эффективный) будет:

string[] lines = File.ReadAllLines(fileName);
Array.Resize(ref lines, lines.length - 1);
File.WriteAllLines(fileName, lines);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...