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.

5 comentários:

Anônimo disse...

Como faço para pular linha ao escrever no arquivo?

Anônimo disse...

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

Matheus Abreu de Oliveira disse...

O arquivo é criado na pasta do projeto. Por exemplo:
C:\Users\"Usuario"\Documents\NetBeansProjects\"Nome do Projeto"

Anônimo disse...

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

Ice Dragon disse...

Na realidade o código não tem saída alguma pra tela, por isso parece que não aconteceu nada.. mas se você observar ele cria o arquivo ProgramacaoProgressiva.txt com o conteúdo "Escrita no arquivo realizada com sucesso"

Veja também: