powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# Stream в byte[]
10 сообщений из 10, страница 1 из 1
C# Stream в byte[]
    #39569697
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно никогда раньше шарпом особо не интересовался, но вот понадобилось написать маленькую программку и завис

надо конвертировать System.IO.Stream в byte[]
делал как в инете описано раз 10

public static byte[] StreamToByteArray(Stream inputStream)
{
byte[] bytes = new byte[16*1024];
using (MemoryStream memoryStream = new MemoryStream())
{
int count;
while ((count = inputStream.Read(bytes, 0, bytes.Length)) > 0)
{
memoryStream.Write(bytes, 0, count);
}
return memoryStream.ToArray();
}
}

всё отрабатывается но на выходе пустой массив (входной поток inputStream.Length=1964, так на всякий случай :)) )
в дебаге выясняется что inputStream.Read вообще не выполняется ни разу
что я не догоняю
заранее извиняюсь если вопрос глупый, в шарпе я полный чайник, прошу тапками не кидаться
...
Рейтинг: 0 / 0
C# Stream в byte[]
    #39569704
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
C# Stream в byte[]
    #39569710
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, вот так лучше выглядит:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
      public static byte[] StreamToByteArray(Stream inputStream)
        {
            byte[] bytes = new byte[16*1024];
            using (MemoryStream memoryStream = new MemoryStream())
            {
                int count;
                while ((count = inputStream.Read(bytes, 0, bytes.Length)) > 0)
                {
                    memoryStream.Write(bytes, 0, count);
                }
                return memoryStream.ToArray();
            }
        }
...
Рейтинг: 0 / 0
C# Stream в byte[]
    #39569718
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а inputStream в начало "перемотан"?
...
Рейтинг: 0 / 0
C# Stream в byte[]
    #39569727
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для чтения потока в байтовый массив можно использовать BinaryReader, размер массива\потока нужно знать заранее, так как поток не гарантирует то, что размер будет известен
...
Рейтинг: 0 / 0
C# Stream в byte[]
    #39569728
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proа inputStream в начало "перемотан"?

Такая мысль была. Указатель там стоит на конце.
Извиняюсь за чайниковский вопрос, а как перемотать?
...
Рейтинг: 0 / 0
C# Stream в byte[]
    #39569732
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnn,
Stream.Seek()
https://msdn.microsoft.com/ru-ru/library/system.io.stream.seek(v=vs.110).aspx
Не все потоки поддерживают seek, вроде у Stream есть еще свойство CanSeek
...
Рейтинг: 0 / 0
C# Stream в byte[]
    #39569742
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, спасибо. Помогло.
...
Рейтинг: 0 / 0
C# Stream в byte[]
    #39569930
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnnShocker.Proа inputStream в начало "перемотан"?

Такая мысль была. Указатель там стоит на конце.
Извиняюсь за чайниковский вопрос, а как перемотать?

Как вариант
Код: c#
1.
inputStream.Peremotka(v_nachalo);
...
Рейтинг: 0 / 0
C# Stream в byte[]
    #39571375
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnn,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        /// <summary>
        /// Возвращает из стрима все байты
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        public static byte[] ToBytes(this Stream stream)
        {
            if (stream.CanSeek)
                stream.Position = 0;
            var bufferLen = (int)stream.Length;
            var buffer = new byte[bufferLen];
            stream.Read(buffer, 0, bufferLen);
            return buffer;
        }
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# Stream в byte[]
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]