anabeth4 Ответов: 1

Правильное добавление заголовка в выходной текстовый файл с помощью streamwriter, C#


Я хочу добавить заголовок в выходной текстовый файл после чтения и записи с заданным условием.

Мой код считывается из входного файла и записывается в выходной файл:
Учительнице Ане 256
Бен Студент 12

я хочу добавить заголовок и выходной файл, чтобы быть:
Точки Пользовательских Функций
Учительнице Ане 256
Бен Студент 123

Я попытался прочитать файл и переписать его с новой строкой(заголовком).

Что я уже пробовал:

string path2 = path + @"\new.txt";
 string s;
 string header = (User, Function, Points);
 string tempfile = path2 + "\\tempfile.txt"; 
//part of code for stream reader, i am not including here

using (StreamWriter writer = new StreamWriter(path))
            {
                 writer.WriteLine(l);

static void InsertHeader(string path2, string header)
{
    var tempfile = Path.GetTempFileName();
    using (var writer = new StreamWriter(tempfile))
    using (var reader = new StreamReader(path2))
    {
        writer.WriteLine(header);
        while (!reader.EndOfStream)
            writer.WriteLine(reader.ReadLine());
    }
    File.Copy(tempfile, path2, true);
    File.Delete(tempfile);
}

 label2.Text = "File is converted ";

}

Tomas Takac

Зачем вам нужно вставлять заголовок в существующий файл? Почему бы не написать сначала заголовок, а затем записать данные?

1 Ответов

Рейтинг:
1

OriginalGriff

Вы не определяете методы внутри методов, и вы не можете открыть запись потока в открытом файле, и вы не можете перезаписать файл, который читается.

В качестве предложения Используйте файл.ReadAllText чтобы прочитать весь ваш файл, затем добавьте к нему текст заголовка и запишите его обратно поверх исходного файла:

string path = @"D:\Temp\MyFile.txt";
string data = File.ReadAllText(path);
string withHeader = "The header\n" + data;
File.WriteAllText(withHeader);


anabeth4

Хм, я понимаю, Спасибо большое.
мой вопрос таков: если я использую файл.ReadAllText я думаю, что это изменит всю логику, потому что я печатаю только те строки текста, где точки находятся от 100 до 300.
Куда я должен включить: файл.WriteAllText(withHeader); ?? после написания всех строк или нет?

OriginalGriff

Затем используйте ReadAllLines, чтобы прочитать весь файл в массив строк и построить список строк для построения выходных данных. Вставьте свой заголовок в список и добавьте в него необходимые строки. Наконец, запишите список в файл с помощью WriteAllLines:

File.WriteAllLines(path, myList.ToArray());