Countdown

Final Countdown

Faltam dias. Ou segundos.

sexta-feira, 27 de março de 2015

#12) Manipulação de Arquivos

Boa noite!

Hoje venho aqui novamente relatar novidades descobertas durante o desenvolvimento do projeto Boot (o programa gerenciador de Hyperlinks), que agora se encontra em sua versão V 1.2:

Link do código do Projeto (Versão 1.2):

O assunto de hoje é a manipulação de arquivos (Files) diversos, sendo que vamos tratar em particular a criação de arquivos .txt para armazenar informações do nosso programa, de modo que seja possível salvar os dados fornecidos pelo usuário em um arquivo externo. 
Assim, é possível recuperar esses dados em uma futura execução do programa, como estamos habituados a abrir e salvar arquivos de texto .doc, por exemplo.

---//---

[Class File]

Essa classe tem a função exclusiva de navegação através dos diretórios e exibição das propriedades dos arquivos, como tamanho, última alteração, sua existência, etc. Resumindo, tem as funcionalidades do explorer. Sua importação é feita por:
import java.io.File;

Nada melhor para mostrar o emprego de uma classe que um exemplo de aplicação prática. A seguinte aplicação é um explorador rústico de arquivos, que mostra as informações do arquivo/diretório digitado:

-------------------------------------------\\-----------------------------------------------
package cmd;
import javax.swing.*;
import java.io.File;
 
public class CMD
{
    public static void main(String[] args) {
 
        JOptionPane.showMessageDialog(null, "Bem vindo ao Explorer",
                    "Explorer", JOptionPane.WARNING_MESSAGE);
        String caminho = JOptionPane.showInputDialog(null,"Digite algum endereço.");
 
        while(!navega(caminho))
            caminho = JOptionPane.showInputDialog(null,">>"+caminho+"\nDigite algum endereço.");
    }
 
    public static boolean navega(String caminho)
    {
        String info = "";
        File arquivo = new File(caminho);
 
        if( arquivo.exists() )
        {
            info+= "O caminho especificado existe !\n"+ ">>"+caminho+"\n\n";
            if(arquivo.isFile()){
                 info += "É um arquivo de tamanho "+arquivo.length()+ " bytes\n"
                        + "Útima vez modificado "+arquivo.lastModified()+"\n"
                        + "Cujo caminho é "+arquivo.getPath()+"\n";
                 JOptionPane.showMessageDialog(null, info,
                    "Alerta", JOptionPane.WARNING_MESSAGE);
                 return true;
            }
            else
            {
                 info += "O diretório contém os arquivos:\n";
                 String[] arquivos = arquivo.list();
 
                 for( String file : arquivos)
                   info += file +"\n";
            }
        }
        else  info += "Endereço errado";
        JOptionPane.showMessageDialog(null, info,
                    "Alerta", JOptionPane.WARNING_MESSAGE);
        return false;
    }
}
-------------------------------------------\\-----------------------------------------------
Código 1 - Explorador de arquivos e diretórios.

Cuidado apenas ao abrir diretórios muito grandes, pois poderá gerar uma janela muito grande, o que será um pouco desconfortável.

Figura 1 - Programa Explorer.

---//---

[Class Formatter]

A classe Formatter é usada para escrever em arquivos. Assim como na linguagem C, deve-se usar comandos para abrir e fechar o arquivo .txt a ser manipulado. Sua inclusão é feita por:
import java.util.Formatter;
A chamada "fopen" é feita por:
  try {                                                        
            arquivo = new Formatter(file + ".txt");
        } catch (...) { ...}                                          

A estrutura try - catch tem a funcionalidade de evitar possíveis erros na geração do arquivo, como falta de permissão de criação do arquivo (diretório restrito ou arquivo já existente).

A chamada "fclose" é bem simples:
arquivo.close();

Sua escrita é relativamente simples e sem complicação:
            arquivo.format(stringAescrever);


---//---

[Class Scanner]

A classe Scanner é usada ler arquivos. Assim como na linguagem C, deve-se usar comandos para abrir e fechar o arquivo .txt a ser manipulado. Percebe-se grandes semelhanças entre esta classe e a classe Formatter:
import java.util.Scanner;
A chamada "fopen" é feita por:
  try {                                                                              
            arquivo = new Scanner(new File(filename + ".txt");
        } catch (...) { ...}                                                              

A estrutura try - catch tem a funcionalidade de evitar possíveis erros na leitura do arquivo, como a inexistência do arquivo. Note que este problema pode ser resolvido usando a Classe File, vista no post de hoje.

A chamada "fclose" é bem simples e idêntica à da classe Formatter:
arquivo.close();

Sua leitura não poderia ser mais simples:
entrada.hasNext();

Nenhum comentário:

Postar um comentário