1
resposta

[Dúvida] Qual a diferença entre utilizar e não utilizar o Filestream?

Olá,

Estava a testar alternativas, e o código abaixo tem a mesma função do código proposto pela instrutora, a diferença é que não utilizamos o Filestream para abrir o arquivo, já utilizamos diretamente o StreamReader.

partial class Program
{
    static void Main(string[] args)
    {
        using(StreamReader leitor = new StreamReader("contas.txt"))
        {
            while (!leitor.EndOfStream)
            {
                var linha = leitor.ReadLine();
                Console.WriteLine(linha);
            }
        }
        Console.ReadLine();
    }
}

Código original

using ByteBankIO;
using System.Text;

partial class Program
{
    static void Main(string[] args)
    {
        var nomeDoArquivo = "contas.txt";
        using(var fluxoDoArquivo = new FileStream(nomeDoArquivo, FileMode.Open))
        {
            var leitor = new StreamReader(fluxoDoArquivo);
            while (!leitor.EndOfStream)
            {
                var linha = leitor.ReadLine();
                Console.WriteLine(linha);
            }
        }
        Console.ReadLine();
    }
}

Obs: Quando rodo o código original na minha máquina observei que são ocupados 13 mb de memória, enquanto quando rodo o código alternativo são ocupados 15 mb de memória.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Oi Pedro, tudo bem? 😊

Agradeço por compartilhar suas experimentações e observações! 👍

A diferença entre usar FileStream e StreamReader diretamente está na flexibilidade e no controle que você tem sobre o processo de leitura do arquivo.

  1. FileStream: Lida com a leitura de bytes brutos de um arquivo. Ele oferece mais controle sobre como os dados são acessados, permitindo que você especifique o modo de abertura do arquivo (FileMode), o tipo de acesso (FileAccess) e o compartilhamento (FileShare).

  2. StreamReader: É uma camada de abstração construída sobre um Stream (como o FileStream). Ele facilita a leitura de texto de um Stream, cuidando da codificação e fornecendo métodos convenientes como ReadLine() para ler o arquivo linha por linha.

No seu código alternativo, o StreamReader está abrindo o arquivo diretamente, o que é uma forma simplificada de fazer a mesma coisa que o código original faz com mais passos.

Quando usar cada um:

  • Use FileStream quando precisar de controle fino sobre como o arquivo é aberto e lido, como quando você precisa especificar opções avançadas de acesso ou lidar com arquivos binários.
  • Use StreamReader diretamente quando você só precisa ler um arquivo de texto de forma simples e não precisa de opções avançadas de configuração.

A diferença de uso de memória que você observou pode ser devido a otimizações internas do .NET ou a pequenas variações na forma como os recursos são alocados e liberados em cada caso.

🎓 Para saber mais:

Espero ter ajudado a esclarecer sua dúvida! 🤔 💪