Diferença entre uma matriz de bytes e MemoryStream
-
08-06-2019 - |
Pergunta
Estou lendo um arquivo binário em um programa de análise.Precisarei percorrer o arquivo e procurar determinados marcadores para poder dividir o arquivo e passar essas partes para os construtores de seus respectivos objetos.
Existe uma vantagem em manter o arquivo como um fluxo, seja MemoryStream ou FileStream, ou ele deve ser convertido em uma matriz de bytes[]?
Keith
Solução
A byte[]
ou MemoryStream
ambos exigirão trazer o arquivo inteiro para a memória.A MemoryStream
é realmente um wrapper em torno de uma matriz de bytes subjacente.A melhor abordagem é ter dois FileStream
(um para entrada e outro para saída).Leia o fluxo de entrada procurando o padrão usado para indicar que o arquivo deve ser separado durante a gravação no arquivo de saída atual.
Você pode considerar agrupar os arquivos de entrada e saída em um BinaryReader
e BinaryWriter
respectivamente, se agregarem valor ao seu cenário.
Outras dicas
Um MemoryStream é basicamente uma matriz de bytes com uma interface de fluxo, por ex.leitura/escrita sequencial e o conceito de posição atual.