Java: Class Formatter ( a classe Formatter ) - Escrevendo em arquivos

Já vimos como obter informações sobre arquivos e diretórios, através da classe File, agora vamos realmente criar um arquivo que nos permita manipular informações de texto na forma sequencial.


- Criando um arquivo de texto

Para criar uma saída formatada, vamos usar um objeto da classe Formatter.
Além de abrir o arquivo para escrita, vamos testar antes para ver se é possível escrever nele, se temos permissões e se o arquivo existe.

Isso é importante para deixar nossas aplicações bem robustas e a prova de erros.
Não vá, simplesmente, abrindo os arquivos. Antes, teste se eles existem, se o usuário tem permissão de abrir, para checar se é possível mesmo escrever nele.


CriandoArquivoTexto.java
public class CriandoArquivoTexto
{
    public static void main(String[] args)
    {
        EscreverMetodos teste = new EscreverMetodos();
        teste.abrir();
        teste.escrever();
        teste.fechar();
     
    }

}


EscreverMetodos.java

import java.util.Formatter;
import java.util.NoSuchElementException;
import java.util.FormatterClosedException;
import java.lang.SecurityException;
import java.io.FileNotFoundException;


public class EscreverMetodos
{
    private Formatter arquivo;

        public void abrir()
        {
            try
            {
                arquivo = new Formatter("ProgramacaoProgressiva.txt");
            }
            catch( SecurityException semPermissao)
            {
                System.err.println(" Sem permissao para escrever no arquivo ");
                System.exit(1); //exit(0) é sucesso, outro número significa que terminou com problemas
            }
            catch( FileNotFoundException arquivoInexistente )
            {
                System.err.println(" Arquivo inexistente ou arquivo não pode ser criado");
                System.exit(1);
            }
        }
         
        public void escrever()
        {
            try
            {
                arquivo.format("Escrita no arquivo realizada com sucesso");
            }
            catch(FormatterClosedException formatoDesconhecido)
            {
                        System.err.println("Erro ao escrever");
                        return;
            }
            catch(NoSuchElementException excecaoElemento)
            {
                System.err.println("Entrada invalida. Por exemplo, era pra ser uma string, mas foi um inteiro");
            }
         
        }
     
       public void fechar()
       {
           arquivo.close();
       }
}



Após compilar e rodar, verá que foi criado um arquivo chamado ProgramacaoProgressiva.txt com a string "Escrita no arquivo realizada com sucesso".

Usei a saída formatada 'arquivo.format()' para você saber que pode passar informações formatadas exatamente da mesma maneira que você fazia com printf.
Note que é sempre importante fecharmos um arquivo que não estamos mais usando, liberando recursos da máquina.

2 comentários:

Anônimo disse...

Não sei se entendi errado, mas após compilar, não apareceu nda.
valeu!!

Anônimo disse...

No compilador nada acontece amigo, só vai criar um arquivo na pasta do projeto ou no destino especificado.