Avatar ·

Como criar um array de bytes a partir de um Stream em C#? Guia completo

Olá a todos! Sou novo em C# e estou trabalhando em um aplicativo que baixa arquivos da internet. Preciso ler todos os dados de um NetworkStream ou FileStream em um array byte[]. O problema é que não sei o tamanho do stream antecipadamente. Tentei usar a propriedade Length, mas para muitos streams ela lança uma exceção NotSupportedException.\n\nAqui está meu código atual, que não funciona:\n\n
// Tentando ler o stream em um array de bytes\nbyte[] buffer = new byte[stream.Length]; // Erro: 'Stream' does not support seeking\nstream.Read(buffer, 0, buffer.Length);\n
\n\nEsse erro ocorre quando trabalho com streams de rede (NetworkStream) ou streams de respostas HTTP. Entendo que preciso ler os dados em partes, mas não sei como organizar o loop corretamente. Vi algo sobre Memory