Salve galerinha, espero que estejam bem!
Se alguém puder me dar uma luz, estou realizando as aulas do C# trabalhando com arquivos, e ao fim do primeiro módulo e começo do segundo, fiz a função de leitura de buffer em string, porém, estão rolando dois pequenos bugs, onde as informações são lidas 2x, sendo que há apenas 1 Console.Write para as informações em questão, e além disso, em alguns momentos, a aplicação não está quebrando linhas, mas no arquivo utilizado, ele está ok.
Segue abaixo o código que estou rodando:
using System.IO;
using System.Text;
using ByteBankIO;
string caminhoArquivo = "./contas.txt";
try{
// BytesLidos é o número de bytes lidos do arquivo (definido como -1 para indicar que não houve leitura)
int bytesLidos = -1;
//Buffer
var buffer = new byte[1024]; // 1KB
// Cria o arquivo caso não exista
var fluxoArquivo = new FileStream(caminhoArquivo, FileMode.Open);
while(bytesLidos != 0){
//Lê o arquivo usando o buffer (que é um array de bytes), lendo a cada 1024 bytes / 1KB
bytesLidos = fluxoArquivo.Read(buffer, 0, 1024);
//Escreve o buffer na tela
WriteBuffer(buffer);
}
// Fecha o fluxo de arquivo após a leitura completa
if (bytesLidos == 0){
fluxoArquivo.Close();
}
}
catch (Exception ex){
Console.WriteLine($"Ocorreu uma exceção do tipo {ex.GetType()}.\nMensagem: {ex.Message}");
}
static void WriteBuffer(byte[] buffer){
// Cria uma instância de UTF8Encoding para converter o buffer em string
var utf = new UTF8Encoding();
// Converte o buffer em string e escreve na tela
var texto = utf.GetString(buffer);
Console.Write(texto);
//Aguarda 500ms para evitar que o console fique muito rápido
Thread.Sleep(500);
}
Ambiente:
- Versão .NET 9.0
- Windows 11
- MS VS 17.13.5
Evidências: