Minicursos - C#

Escrevendo e Lendo Arquivos de Texto


Chegamos ao final deste minicurso de C#. Para encerrá-lo, vamos continuar trabalhando no formulário frmSobre apenas por uma questão prática. O objetivo aqui será deixar que o usuário personalize a imagem que será exibida na PictureBox e claro que um programa comercial não permitiria tal operação, mas apenas para que aprendamos como gerar e ler arquivos texto, o exemplo neste formulário será propício. Faremos, também, com que o sistema carregue automaticamete a imagem escolhida sempre que este formulário for aberto. Para isso teremos que salvar o nome do arquivo que contém a foto, bem como o caminho até a pasta em que ele se encontra. Nós até poderíamos armazenar isso em um arquivo RTF, que já sabemos como criar, mas vamos aumentar nosso horizonte de conhecimentos! Agora vamos criar um arquivo TXT contendo essa informação, pois assim aprenderemos também a lidar com algumas ferramentas do Namespace System.IO.

Bem, como primeiro passo vamos inserir este Namespace em nossa aplicação, no formulário frmSobre, da seguinte forma:

Escrevendo e lendo arquivos texto C#

Feito isso vamos criar uma variável global, privada, que armazenará o caminho do arquivo, da seguinte forma:

Escrevendo e lendo arquivos texto C#

Agora vamos localizar o melhor ponto para obtermos o nome do arquivo de imagem selecionado pelo usuário, que é o indicado pela imagem abaixo:

Escrevendo e lendo arquivos texto C#

O ponto é o indicado pela flecha, no método FileOk da ferramenta OpenFileDialog. Bem, mas por que eu escolhi este ponto e não outro qualquer? Acontece que neste ponto podemos facilmente obter o caminho do arquivo através do método FileName do "ofdLogo", presente no comando logo acima. Para conseguir isso faremos a seguinte inserção:

Escrevendo e lendo arquivos texto C#

Com isso teremos, na variável strCaminhoArquivo, o caminho do arquivo selecionado pelo usuário. Na sequência faremos alterações no código referente ao botão "Salvar" do frmSobre. O primeiro passo será remover o código que faz o salvamento do RichTextBox, afinal de contas agora ele já está gerado e é somente leitura. Portanto, as linhas a serem removidas são:

Escrevendo e lendo arquivos texto C#

O código a ser inserido é:

Escrevendo e lendo arquivos texto C#

Comentando-o, teremos:

Escrevendo e lendo arquivos texto C#

Aqui vale uma importante observação: claro que verificar se um arquivo existe, apagá-lo e cria-lo novamente apenas para armazenarmos uma pequena informação de configuração não é a estratégia mais profissional, no entanto o objetivo aqui foi, “pegando carona” no tópico anterior sobre a geração de arquivos RTF, fazer uma pequena demonstração de como gerar arquivos TXT também. Em C# existem classes e dezenas de métodos para manipulação de dados em arquivos que nos permitiriam fazer de tudo o que imaginássemos com os dados, evitando essa exclusão desnecessária, no entanto a parte de manipulação de arquivos daria um minicurso, então não coloquemos foco nisso agora. Quis fazer este comentário apenas para que não fique a impressão de que essa estratégia utilizada é a única que temos. Repito que não é e ela sequer é boa, mas eu a utilizei para demonstrar a criação de um arquivo TXT que, para o nosso exemplo, apenas fará o armazenamento do endereço da imagem selecionada pelo usuário com o logotipo da aplicação.

Bem, mas vamos continuar...

Vou definir como logotipo um arquivo que tenho na minha área de trabalho, chamado Logo.png.

Escrevendo e lendo arquivos texto C#

Agora vou abrir o arquivo c:\CB\Config.txt

Escrevendo e lendo arquivos texto C#

Aí está o correto endereço do arquivo selecionado como logotipo, no entanto ele ainda não é carregado automaticamente, assim como acontece com o conteúdo do RichTextBox.

Vamos criar o código para isso. Para efetuarmos a leitura de um arquivo texto, devemos fazer uso da classe StreamReader(ou TextReader). Através dela poderemos ler um arquivo e gerar uma sequência de caracteres, que pode ser armazenada em uma variável do tipo string.

A forma de utilização é bastante simples. Como queremos que a ação de leitura e preenchimento da PictureBox aconteça quando o formulário for carregado, vamos inserir, no método Load do mesmo, o seguinte comando:

Escrevendo e lendo arquivos texto C#

Comentando-o, teremos:

Escrevendo e lendo arquivos texto C#

Agora vamos executar a aplicação e abrir o formulário de “Sobre o Programa” para ver o que acontece...

Escrevendo e lendo arquivos texto C#

Aí está o nosso logotipo automaticamente carregado!

No entanto, vamos tentar alterar a imagem e salva-la, apenas para testar mais uma vez e termos a certeza de que tudo funciona bem. Vejamos o que acontece quando eu tento selecionar outra imagem qualquer e clico no botão "Salvar"...

Escrevendo e lendo arquivos texto C#

Ooops! Não funcionou! Pois é, mas isso já era esperado. Vejam que a mensagem que o Visual C# nos retorna é que o arquivo Config.txt não pode ser acessado por já estar aberto. Isso acontece porque no método Load do formulário estamos usando o objReader para efetuar a leitura do arquivo Config.txt e ele permanece “lendo” o arquivo, ou seja, permanece aberto e vinculado ao objReader, por isso quando tentamos fazer a alteração do conteúdo, não é possível. Isso é extremamente fácil de resolver! A classe StreamReader possui um método camado Dispose, que é responsável por liberar os recursos utilizados pelo objeto, que no nosso exemplo é o objReader, e outro chamado Close, que fecha o objeto.

Vamos inseri-los após a colocação do endereço na variável strTemp, como ilustra a imagem abaixo:

Escrevendo e lendo arquivos texto C#

Com essa pequena alteração podemos evitar aquele erro, já que o arquivo Config.txt estará liberado pela aplicação após a leitura e o formulário funcionará corretamente!

Agora, para evitar que o usuário tente salvar um endereço vazio, vamos alterar a propriedade Enabled do botão btnSalvar para "False", e habilitá-la para "True" somente quando uma foto for selecionada, no seguinte trecho de código:

Escrevendo e lendo arquivos texto C#

Fazendo isso, o botão "Salvar" somente estará habilitado após o usuário ter selecionado um arquivo de imagem para a PictureBox.

Com isso encerramos o minicurso de C#. Vocês encontrarão outros tópicos em seções como a "Dicas/Tutoriais", que são totalmente aleatórios, apenas envolvendo assuntos que achei interessantes. Recomendo que vocês os leiam também e, para encerrar por completo, acessem a página de Comentários, que é o tópico seguinte.



Notícias - Games

Atari VCS é finalmente lançado e surpreende

O Atari VCS foi lançado recentemente e trouxe suporte a praticamente todos os serviços de streaming de jogos já disponíveis. A única exceção foi por conta do Playstation Now, cujo suporte nativo não é oferecido, mas ele pode ser acessado através do modo PC do VCS, já que o console possui Googl...

Ler Notícia Completa

Conheça o Playstation 2 portátil criado por um brasileiro

Claudio Adriano decidiu criar uma versão portátil do console Playstation 2, da Sony. Inspirado no Nintendo Switch, o console ficou pronto depois de 2 anos de trabalho e algumas interessantes adaptações. Partindo de uma placa-mãe de um PS2 Slim, Claudio fez os encaixes necessários para que a pla...

Ler Notícia Completa

PS5 com SSDs não originais apresentam ótimo resultado

A última atualização do PS5 permite que se faça a expansão do armazenamento do console. Embora o aparelho exija características específicas para os dispositivos de expansão, como taxa de leitura de 5Gb/s, ele funciona surpreendentemente bem com SSDs de velocidades inferi...

Ler Notícia Completa

Capcom Pro Tour sofre o cancelamento de algumas etapas por conta do coronavírus

Em um comunicado ao público via redes sociais, a Capcom revelou que algumas etapas do Capcom Pro Tour foram removidas do calendário como precaução contra o surto de coronavírus pelo mundo...

Ler Notícia Completa

Conheça o Stadia: a incrível plataforma de streaming de games do Google

O Google deu o pontapé inicial para o que espera ser o futuro dos videogames: consoles e hardware em geral ficam em segundo plano, e os games rodam em qualquer dispositivo via streaming. A plataforma Stadia promete levar jogos para notebooks, TVs, celulares e muito mais. O projeto do Google se...

Ler Notícia Completa

Anúncios pornográficos eram exibidos em jogos infantis da Google Play Store devido a um bug

Um app malicioso foi responsável por fazer com que cerca de 60 jogos publicados na Google Play Store veiculassem anúncios pornográficos. Entre os aplicativos estão games infantis e títulos baixados mais um milhão de vezes na loja online da Google. O problema foi flagrado pela empresa de seguran...

Ler Notícia Completa

Você sabia?

Excesso de barulho dentro do seu gabinete, principalmente logo que você o liga, pode ser sintoma de problemas nas ventoinhas, que podem precisar ser limpas ou trocadas. Entre em contato com um técnico de sua confiança e verifique isso o quanto antes.

Ajude o Contém Bits com um cafezinho!

Se você gostou do artigo, se ele lhe foi útil de alguma maneira e você quiser ajudar o Contém Bits, saiba que é simples, fácil e rápido. Basta clicar na imagem do PayPal (ou no cafezinho) e seguir as instruções, em ambiente seguro e com o respaldo do Paypal. Eu agradeço muito! :)


Você gostará destes vídeos!