21/05/2013 1 Arquivos em Java Persistência de Dados

Propaganda
21/05/2013
DCC / ICEx / UFMG
Persistência de Dados
Arquivos em Java
Dados armazenados em variáveis e
vetores são temporários
São perdidos quando o programa termina
Eduardo Figueiredo
http://www.dcc.ufmg.br/~figueiredo
Arquivos
São estruturas de dados manipuladas
fora do ambiente de programação
Gravadas e acessadas
Arquivos são persistentes
Permanecem gravadas mesmo depois
do programa ser finalizado
Geralmente armazenados na memória
secundária (exemplo: disco)
Para persistência dos dados, é
necessário usar arquivos
Arquivos registram informações em
memória secundária (disco)
Utilização de Arquivos
Persistência de dados
Arquivos são usados quando os dados
não podem ser perdidos após o
programa ser encerrado (ou o
computador ser desligado)
Volume grande de dados
Arquivos podem ser usados quando um
grande volume de dados precisam ser
guardados
Stream (fluxo) e Serialização
Arquivos em Java
Stream são dados ordenados que são
lidos ou gravados em um arquivo
Os objeto precisar ser serializáveis
para serem gravados em disco
Enviar um objeto pela rede também usa
serialização
Objetos serializáveis implementam a
interface Serializable (pacote java.io)
1
21/05/2013
Principais Classes (java.io)
FileInputStream
Recupera bytes a partir de um arquivo
Grava bytes para um arquivo
FileReader
Recupera caracteres de um arquivo
FileWriter
Grava caracteres em um arquivo
Exemplo: FileInfo
public class FileInfo {
Cria um objeto File a partir de
public void analyzePath( String path ) {
um caminho e verifica se o
File name = new File( path );
arquivo ou diretório existe .
if ( name.exists() ) {
System.out.println(name.getName() + " exists");
System.out.println(name.isFile() ? "is a file" : "is not a file");
System.out.println(name.isDirectory() ? "is a directory" : "is not a directory");
System.out.println("Path: " + name.getPath());
System.out.println("Absolute path: " + name.getAbsolutePath());
System.out.println();
if ( name.isDirectory() ) {
String[] directory = name.list();
System.out.println( "\n\nDirectory contents:\n" );
for ( String directoryName : directory )
Se não existe arquivo ou
System.out.println( directoryName );
diretório com o nome, imprime
}
uma mensagem de erro.
}
else {
System.out.println( path + " does not exist." );
}
}}
Exemplo: FileInfoTest
public class FileInfoTest {
Representação abstrata de um caminho
para arquivo ou diretório
O caminho String pode ser passado para o
construtor da classe
FileOutputStream
import java.util.Scanner;
Classe File
Usuário entra com o nome de
um arquivo ou diretório .
public static void main( String[] args ) {
Scanner input = new Scanner( System.in );
System.out.print( "Enter file or directory name: " );
String fileName = input.nextLine();
FileInfo fileInfo = new FileInfo();
fileInfo.analyzePath( fileName );
Alguns métodos principais
exists() verifica se o arquivo/diretório existe
isDirectory() verifica se é diretório
isFile() verifica se é arquivo
getName() retorna o nome do arquivo/diretório
Exemplo: FileInfo
public class FileInfo {
public void analyzePath( String path ) {
Se o arquivo existe, imprime o
File file = new File( path );
nome e outras informações.
if ( file.exists() ) {
System.out.println(file.getName() + " exists");
System.out.println(file.isFile() ? "is a file" : "is not a file");
System.out.println(file.isDirectory() ? "is a directory" : "is not a directory");
System.out.println("Path: " + file.getPath());
System.out.println("Absolute path: " + file.getAbsolutePath());
System.out.println();
if ( file.isDirectory() ) {
Se for um diretório,
String[] directory = file.list();
imprime os nomes de
System.out.println( "Directory contents:" );
arquivos e subdiretórios
for ( String directoryName : directory )
deste diretório.
System.out.println( directoryName );
}
}
else {
System.out.println( path + " does not exist." );
}
}}
Bibliografia da Aula
DEITEL, H. M.; DEITEL P. J. Java:
Como Programar, 8a. Edição.
Pearson, 2010.
Capítulo 17 Arquivos, fluxos e
serialização
}
}
Cria um objeto FileInfo e pede
para analisar o caminho .
2
Download