2
respostas

Não entendi o código dentro do While

Dentro do loop While esta o seguinte codigo: numeroDeBytesLidos = fluxoDoArquivo.Read(buffer, 0, 1024); Nos loops seguintes, o "numeroDeBytesLidos" não vai ser sempre a mesma coisa ? Já que no "fluxoDoArquivo" esta pedindo sempre para ir de 0 a 1024? Ou seja, sempre vai pegar o primeiro byte (índice 0) até o 1024 (índice 1024)

2 respostas

Olá, Fabrizio!

Dentro do loop while, o valor da variável numeroDeBytesLidos não será sempre o mesmo. Isso acontece porque o método Read retorna o número total de bytes lidos do buffer. Ele pode ser menor que o número de bytes solicitado se essa quantidade de bytes não estiver disponível no momento, ou zero se o final do fluxo for atingido.

No código que você mencionou, o Read está sendo utilizado para ler 1024 bytes do arquivo em cada iteração do loop. A cada leitura, o valor de numeroDeBytesLidos será atualizado com a quantidade de bytes lidos. Por exemplo, se na primeira iteração forem lidos 1024 bytes, na segunda iteração podem ser lidos mais 1024 bytes, e assim por diante.

Dessa forma, o loop while continuará executando enquanto o valor de numeroDeBytesLidos for diferente de zero, ou seja, enquanto houver bytes a serem lidos do arquivo.

Bons estudos!

Essa parte eu entendi!! mas esta assim dentro do loop: numeroDeBytesLidos = fluxoDoArquivo.Read(buffer, 0, 1024); No proximo loop não teria que ser algo assim: numeroDeBytesLidos = fluxoDoArquivo.Read(buffer, 1024, 2048); Para não ler e contar os mesmos dados?