Обработка файлового потока в C # - PullRequest
1 голос
/ 27 декабря 2011

У меня есть веб-приложение, в котором я использую asp: FileUpload Элемент управления для загрузки пользователя XSD и чтения его содержимого (фактически не загружая схему XML), используя следующую инструкцию в функции кнопки Click

using (StreamReader reader = new StreamReader(FileUploadControlName.FileContent))

этот объект чтения используется в функции кнопки Click для чтения XMLSchema, и, таким образом, я генерирую коллекцию на основе этого.

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

Значит, может быть способ записать читателя в Memorystream и повторно использовать MemoryStream.

Извините, я новичок в этом.

Ответы [ 2 ]

2 голосов
/ 27 декабря 2011

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

Пример:

Stream s = new MemoryStream();
StreamReader sr = new StreamReader(s);
// later... after we read stuff
s.Position = 0;

И если вы хотите повторно использовать один и тот же объект в приложении, вы можете использоватьпеременная сеанса.Затем, когда вам нужно будет повторно использовать его, просто установите значение 0 снова и прочитайте его с помощью StreamReader.

1 голос
/ 27 декабря 2011

При вызове using SteamReader удаляется после окончания блока, но не самого потока. Вы можете сохранить поток в переменной Session и использовать его таким образом, но я рекомендую вам очистить переменную Session. Вы можете использовать MemoryStream или переместить файл в папку e TEMP и сохранить местоположение файла в переменной Session. Я бы пошел с этим вариантом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...