Kata - Editor de Texto Simples de Console
Neste kata, construiremos uma aplicação de console fundamental: um editor de texto simples. Este projeto nos permitirá explorar a manipulação de arquivos em C#, uma habilidade essencial para qualquer desenvolvedor. A aplicação será capaz de criar, salvar e abrir arquivos de texto diretamente do terminal.
Vamos focar em conceitos como entrada e saída do console, leitura e escrita de arquivos com StreamReader and StreamWriter, e a importância do bloco using para gerenciar recursos de forma segura.
O Código Completo
Este é o código do nosso Program.cs. Ele estrutura o editor de texto em um menu interativo.
Análise do Código
Main e Menu: Navegação Central
O ponto de entrada Main simplesmente chama o método Menu, que atua como o coração da nossa aplicação.
Console.Clear(): Limpa a tela do console para uma apresentação mais limpa.Loop de Menu: O
Menuexibe as opções, lê a entrada do usuário comConsole.ReadLine()e usa uma instruçãoswitchpara direcionar o fluxo do programa. Note que, após cada ação (Open,Edit), oMenué chamado novamente, criando um loop que mantém a aplicação em execução até que o usuário escolha sair.Saída Segura:
System.Environment.Exit(0)é usado para encerrar a aplicação de forma limpa quando o usuário digita '0'.
Open: Lendo Arquivos
Esta função é responsável por abrir e exibir o conteúdo de um arquivo de texto.
StreamReader: Esta classe doSystem.IOé projetada para ler caracteres de um fluxo (neste caso, um arquivo).Bloco
using: Este é um dos conceitos mais importantes aqui. Ousinggarante que o objetofile(que representa o arquivo no sistema operacional) seja "descartado" (Dispose) corretamente, mesmo que ocorram erros. Isso significa que o arquivo será fechado, liberando o recurso para outros programas. É a maneira padrão e segura de trabalhar com recursos como arquivos e conexões de rede.ReadToEnd(): Lê todo o conteúdo do arquivo, do início ao fim, e o retorna como uma únicastring.
Edit e Save: Criando e Escrevendo em Arquivos
O processo de criação é dividido em duas partes: Edit para capturar a entrada e Save para escrevê-la no disco.
Captura de Múltiplas Linhas: O loop
do-whileé uma forma inteligente de capturar texto. Ele continua adicionando linhas à variáveltextaté que a teclaESCseja pressionada.Console.ReadKey()intercepta a próxima tecla pressionada sem exigir que o usuário pressione Enter.Environment.NewLine: Garante que as quebras de linha sejam corretas para o sistema operacional em que o programa está sendo executado (seja\nno Linux/macOS ou\r\nno Windows).
StreamWriter: O oposto doStreamReader, esta classe é usada para escrever strings em um fluxo/arquivo. Se o arquivo não existir nopathespecificado, ele será criado. Se já existir, seu conteúdo será sobrescrito.Segurança com
using: Assim como noOpen, ousinggarante que o arquivo seja fechado e salvo corretamente após a escrita.
Conceitos-Chave Aplicados
Entrada e Saída do Console: Uso intensivo de
Console.WriteLine,Console.ReadLineeConsole.ReadKeypara criar uma interface de usuário interativa.Manipulação de Arquivos (
System.IO): Utilização das classesStreamReadereStreamWriterpara operações de leitura e escrita em arquivos.Gerenciamento de Recursos com
using: Aplicação da instruçãousingpara garantir que os recursos do sistema (arquivos) sejam liberados de forma segura e automática.Estruturas de Controle: Uso de
switchpara navegação no menu edo-whilepara captura de entrada de texto.Tratamento de Strings: Concatenação de strings para construir o conteúdo do arquivo e uso de
Environment.NewLinepara compatibilidade entre sistemas operacionais.
Como Executar
Para testar este programa, você precisa navegar até a pasta do projeto no seu terminal e usar o comando dotnet run:
A partir daí, o menu interativo irá guiá-lo para criar, abrir ou salvar seus arquivos de texto.