Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поток недоступен для чтения 
:(
    Опции темы
Darkmaster
Дата 28.5.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2005

Репутация: нет
Всего: нет



Такая проблемка, сначала при помощи Binary Writer записываю данные в Memory Stream, после чего пытаюсь их прочитать и преобразовать в строку. Выдается ошибка, что поток не доступен для чтения. Вот код:

 
Код

            MemoryStream mstream = new MemoryStream();
            BinaryWriter bw = new BinaryWriter(mstream);
            string str = "У шамана три руки...";
            bw.Write(str);
            bw.Close();

            BinaryReader br = new BinaryReader(mstream);
            byte[] newbytes = br.ReadBytes((int)mstream.Length);
            int index = 0;
            if (br.PeekChar() != -1)
            {
                newbytes[index] = br.ReadByte();
                index++;
            }
            mstream.Close();
            Console.WriteLine(Encoding.Default.GetString(newbytes, 0, newbytes.Length));

            Console.ReadLine();


Может это как то связано с системой прав Windows Vista?
--------------------
GeekTV - интернет-телевидение для гиков
PM MAIL   Вверх
tol05
Дата 28.5.2007, 14:35 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Про Висту - это круто! smile 
С Вистой пока мы заморачиваться не будем. Давай код почитаем?

Ты после записи вызываешь
Код

bw.Close();

А это закрывает не только writer, но и низлежащий поток (mstream). Почему MSDN не читаем?. Открывать mstream повторно кто будет?
Вывод - не закрывать writer до выхода из ф-ции.

Код

mstream.Position = 0;

Надо бы поставить. У нас после записи курсор стоит как раз за последним байтом "У шамана три руки...". Читать с начала хотим? Поставим курсор в начало. А то ведь BinaryReader не знает, как мы читать привыкли, может с конца в начало, или только 5 байтов из середины, правильно? smile

Короче, вот так вроде работает:
Код
 
 MemoryStream mstream = new MemoryStream();
      BinaryWriter bw = new BinaryWriter(mstream);
      string str = "У шамана три руки...";
      bw.Write(str);
      //bw.Close();
      BinaryReader br = new BinaryReader(mstream);
      mstream.Position = 0;
      byte[] newbytes = br.ReadBytes((int)mstream.Length);
      int index = 0;
      if( br.PeekChar() != -1 )
      {
        newbytes[index] = br.ReadByte();
        index++;
      }
      bw.Close();
      br.Close();
      Console.WriteLine(Encoding.Default.GetString(newbytes, 0, newbytes.Length));    
      Console.ReadLine();



--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.