1
resposta

Tamanho do Array de Bytes

Existe alguma forma de saber o tamanho do arquivo carregado no FileStream, para quando for setar o buffer, não precisar usar o tamanho fixo de 1024?

Eu tentei usar assim:

var fileStream = new FileStream(arquivo, FileMode.Open);
var buffer = new byte[fileStram.Length];

Mas não deu certo.

1 resposta

Quando lemos um arquivo, usamos o buffer para jogar para a memória uma parte do arquivo que será processada. Então, quanto menor o buffer, menos memória será exigida para processar todo o arquivo, mas serão necessárias mais chamadas de leitura ao arquivo original (que pode ser custoso).

Já num extremo, ter um buffer do tamanho do arquivo significa ter o arquivo inteiro na memória para ele ser processado, o que pode causar problemas de falta de memória caso seu arquivo seja muito grande.

Minha sugestão é evitar um buffer do tamanho do arquivo. Geralmente, 1024 (uma potência de 2) é um valor comum para ele que funciona para a maioria dos casos.