11 de fev. de 2014

Criação, leitura e escrita de arquivos de texto em Java

A leitura e escrita de arquivos em Java é essencial para guardarmos informações que poderão ser utilizadas em execuções de um determinado programa. O Java disponibiliza algumas classes para criação, leitura e escrita de arquivos .txt .dat etc. Além disso, podemos criar pastas e ler seu conteúdo. Abaixo indicaremos as principais classes utilizadas para manipulação de arquivos em Java.
Classe File:

Função: Permite o acesso aos arquivos do sistema operacional, ou seja, representa um arquivo ou diretório, pela qual pode-se obter informações como nome, tamanho, se é ou não um diretório, se tem permissão para escrita ou leitura etc.

Veja abaixo como utilizar os métodos básicos da classe.

Criar um objeto da classe:
File arq = new File("diretório/arquivo.txt");

Verificar se um arquivo existe:
boolean testar = arq.exists();

Criar um arquivo:
arq.createNewlFile();

Criar um diretório:
arq.mkdir();

Listar todos os arquivos de um diretório:
File [] arq = arq.listFiles();

Deletar um arquivo ou diretório:
arq.delete();


Classe FireWriter e BufferedWriter:

Função: Ambas as classes servem para escrita de arquivos.

Criar um objeto da classe FileWriter:
   
FileWriter fw = new FileWriter(local, boolean);
local = diretório do arquivo ou objeto da classe File;
boolean 
true > Ao escrever no arquivo, o conteúdo existente não será substituído, assim o novo conteúdo será escrito no final.
false >
Ao escrever no arquivo, o conteúdo existente será substituído.

Criar um objeto da classe BufferedWriter:   
BufferedWriter bw = new BufferedWriter( fw );
OBS: Deve receber como argumento um objeto FileWriter, no caso "fw".
Escrever no arquivo:
bw.write( "Testo que será escrito no arquivo txt");

Para dar uma quebra de linha utilize o método:
bw.newLine();

Após a edição do arquivo e necessário fechar os recursos, caso você não feche, o arquivo poderá não ser editado.   
bw.close();
fw.close();

Classes FileReader e BufferedReader 
Função: Ambas as classes servem para ler arquivos de texto:

Criar objeto da classe FileReader:

FileReader fr = new FileReader("diretório/arquivo.txt");
OBS: Pode receber um diretório ou um objeto File.

Criar objeto da classe BufferedReader:

BufferedReader br = new BufferedReader(fr);
OBS: Recebe como parâmetro um objeto da classe FileReader;
    
Ler as linhas de um arquivo:
 
   while( br.ready() ){

       String linha = br.readLine();
}

ou

   while ((linha = br.readLine()) != null) {
         linha = br.readLine();
}   

Ambas as classes devem ser fechadas:
br.close();
fr.close();

Exemplo de criação, leitura e escrita em um arquivo:


  public static void main(String[] args) {


        File arquivo = new File("arquivo.txt");//arquivo no local do projeto
        try {
            if (arquivo.exists() == false) {
                //se não haver esse arquivo ele cria um
                arquivo.createNewFile();
            }

            File[] arquivos = arquivo.listFiles(); //array para guardar as linhas do arquivo


            FileWriter fw = new FileWriter(arquivo, true);
            BufferedWriter bw = new BufferedWriter(fw);

            bw.write("Texto escrito");
            bw.newLine(); //adiciona uma linha
            bw.close();
            fw.close();


            FileReader fr = new FileReader(arquivo);
            BufferedReader br = new BufferedReader(fr);

            String linha = null;
            while ((linha = br.readLine()) != null) { //lê a linha, enquanto não for nula. Quando chegar ao término do arquivo a livro é nula.
                System.out.println(linha);
            }
            br.close();
            fr.close();
           
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }


Um comentário: