Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

[Sugestão] Faltando final do arquivo a ser exibido no console

Conversando com a Luri consegui resolver o problema e gostaria de compartilhar, pois outros podem ter a mesma dúvida que eu tive.

Tive que adicionar esse parâmetro "bytesLidos" no método para conseguir mostrar os últimos bytes do arquivo "contas.txt" e usar uma outra chamada do método GetString(buffer) para ler a quantidade exata de bytes recebidos.

static void EcreverBuffer(byte[] buffer, int bytesLidos)
{
    var utf8 = new UTF8Encoding();
    var texto = utf8.GetString(buffer, 0, bytesLidos);
    Console.Write(texto);
}
while(bytesLidos != 0)
{
    bytesLidos = fluxoDoArquivo.Read(buffer, 0, 1024);
    if(bytesLidos != 0)
    {
        EcreverBuffer(buffer, bytesLidos);
    }
}

Minha sugestão é que seja feita a correção na aula, pois a solução feita na aula não mostra o final do arquivo.

Obrigado.

2 respostas
solução!

Oi, Gabriel! Como vai?

Você fez uma observação muito relevante ao identificar que o método GetString(buffer) processava todo o buffer, incluindo posições que não foram preenchidas na última leitura. A solução de passar bytesLidos para o método e utilizar utf8.GetString(buffer, 0, bytesLidos) garante que apenas os bytes realmente lidos sejam convertidos em texto, além de contribuir com uma sugestão de melhoria para o conteúdo da aula.

Uma dica interessante para o futuro é utilizar o método ReadToEnd() quando a intenção for ler todo o conteúdo de um arquivo de texto de uma só vez. Veja este exemplo:


string texto = File.ReadAllText("contas.txt");
Console.WriteLine(texto);

Esse código lê todo o conteúdo do arquivo e o exibe no console, sendo uma alternativa prática para arquivos menores.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Legal Armano. Obrigado.

Ela explicou em outra aula, ficou claro. E corrigindo meu comentário a solução esta mostrando o fim do arquivo mas repetindo algumas contas após o final do arquivo.