Не закрывать базовый поток

92
07 марта 2022, 10:50

Можно ли как-то сделать так, что бы не вызывался Dispose при использовании оберток StreamReader / StreamWriter?

Т.е., допустим, я открыл файл, далее обернул его в StreamReader, прочитал данные, далее мне нужно записать данные, я закрываю ридер, и открываю райтер, при этом если я закрою ридер, то закроется поток который я в него передал.

Т.е. добиться что-то вроде такого:

using(FileStream clientStream = client.GetStream())
{
    using (TextReader reader = new StreamReader(clientStream, Encoding.UTF8))
    {
        List<string> clientRequestData = new List<string>();
        while (reader.Peek() > -1)
        {
            string line = reader.ReadLine();
            clientRequestData.Add(line);
            Console.WriteLine(line);
        }
    }
    using (StreamWriter writer = new StreamWriter(clientStream, Encoding.UTF8))
    {
        writer.WriteLine("SomeData");
        writer.WriteLine();
        writer.WriteLine();
    }
}
Answer 1

В StreamReader/StreamWriter есть конструкторы с параметром leaveOpen. Он делает то, что вам нужно.

https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader.-ctor?view=netframework-4.8#System_IO_StreamReader__ctor_System_IO_Stream_System_Text_Encoding_System_Boolean_System_Int32_System_Boolean_

READ ALSO
Выводит удаленные записи из БД

Выводит удаленные записи из БД

вот моя настройка nhibernate где я говорю, что не выводить записи у которых "IsDeleted = true" в БД :

77
Количество символов в HTML, в поле типа TEXT, БД PostgreSQL

Количество символов в HTML, в поле типа TEXT, БД PostgreSQL

Подскажите, как можно подсчитать количество символов в поле типа TEXT в БД PostgreSQL, подсчитать количество символов без пробелов, HTML-ссылок, спецсимволов?

90
Как изменить кодировку сайта

Как изменить кодировку сайта

Как перевести сайт с UTF8 на windows-1251?

159
Вставка видео на адаптивный сайт

Вставка видео на адаптивный сайт

Вопрос такойНеобходимо сделать нечто подобное как на фото

106