Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Persistencia, Notas de estudo de Informática

Persistência de Dados em Java

Tipologia: Notas de estudo

2013

Compartilhado em 14/03/2013

samuel-santos-98
samuel-santos-98 🇧🇷

5

(5)

44 documentos

1 / 121

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
2005 by Pearson Education do Brasil
1
14
Arquivos e fluxos
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe Persistencia e outras Notas de estudo em PDF para Informática, somente na Docsity!

Arquivos e fluxos

OBJETIVOS

Neste capítulo, você aprenderá:

 Como criar, ler, gravar e atualizar arquivos.

 Como utilizar a classe File para recuperar informações sobre

arquivos e diretórios.

 A hierarquia de classes para fluxo de entrada/saída do Java.

 As diferenças entre arquivos de texto e arquivos binários.

 Processamento de arquivos de acesso seqüencial e de acesso

aleatório.

 Como utilizar as classes Scanner e Formatter para

processar arquivos de texto.

 Como utilizar as classes FileInputStream e

FileOutputStream.

 Como utilizar um diálogo de JFileChooser.

 Como utilizar as classes FileInputStream e

FileOutputStream.

 Como utilizar a classe RandomAccessFile.

14.6 Serialização de objeto

14.6.1 Criando um arquivo de acesso seqüencial com a

serialização de objeto

14.6.2 Lendo e desserializando dados a partir de um

arquivo de acesso seqüencial

14.7 Arquivos de acesso aleatório

14.7.1 Criando um arquivo de acesso aleatório

14.7.2 Gravando dados aleatoriamente em um arquivo de

acesso aleatório

14.7.3 Lendo dados seqüencialmente de um arquivo de

acesso aleatório

14.7.4 Estudo de caso: Um programa de processamento

de transação

14.8 Classes java.io adicionais

14.9 Abrindo arquivos com JFileChooser

14.10 Conclusão

14.1 Introdução

  • O armazenamento dos dados em variáveis e arrays é temporário.
  • Computadores utilizam arquivos para armazenamento de longo prazo de grandes volumes de dados, mesmo depois de os programas que criaram os dados terminarem.
  • Dados persistentes – existem além da duração da execução do programa.
  • Arquivos armazenados nos dispositivos de armazenamento secundários****.
  • Fluxo – dados ordenados lidos de ou gravados em um arquivo.

14.2 Hierarquia de dados

  • Um campo – um grupo de caracteres ou bytes que carregam um significado.
  • Registro – um grupo de campos relacionados.
  • Arquivo – um grupo de registros relacionados.
  • Os itens de dados processados pelos computadores formam uma hierarquia de dados que se torna maior e mais complexa partindo dos bits até os arquivos.
  • Chave de registro – identifica um registro como pertencente a uma pessoa ou entidade particular – utilizada para fácil recuperação de registros específicos.
  • Arquivo seqüencial – arquivo em que os registros são armazenados pela ordem do campo chave de registro.
  • Banco de dados – um grupo de arquivos relacionados.
  • Sistema de gerenciamento de bancos de dados – uma coleção dos programas projetada para criar e gerenciar bancos de dados.
Figura 14.1 | Hierarquia de dados.

14.3 Arquivos e fluxos

  • Fluxos de arquivos:
    • Fluxos baseados em bytes – representam dados no formato binário.
      • Arquivos binários – criados a partir de fluxos baseados em bytes, lidos por
um programa que converte os dados em formato legível por humanos.
  • Fluxos baseados em caracteres – armazenam os dados como uma seqüência de caracteres. - Arquivos de texto – criados a partir de fluxos baseados em caracteres, eles
podem ser lidos por editores de textos.
  • O Java abre o arquivo criando um objeto e associando um fluxo a ele.
  • Fluxos-padrão – cada fluxo pode ser redirecionado:
    • System.in – objeto do fluxo de entrada-padrão, ele pode ser redirecionado com o método setIn.
    • System.out – objeto do fluxo de saída-padrão, ele pode ser redirecionado com o método setOut.
    • System.err – objeto do fluxo de erro-padrão, ele pode ser redirecionado com o método setErr.

14.3 Arquivos e fluxos ( Cont. )

  • Classes java. io :
    • FileInputStream e FileOutputStream – E / S baseada em bytes.
    • FileReader e FileWriter – E / S baseada em caracteres.
    • ObjectInputStream e ObjectOutputStream os objetos dessas classes podem ser utilizados para E/S de objetos ou variáveis de tipos de dados primitivos.
    • File – útil para obter informações sobre arquivos e diretórios.
  • Classes Scanner e Formatter
    • Scanner – pode ser utilizada para ler facilmente os dados em um arquivo.
    • Formatter – pode ser utilizada para gravar facilmente dados em um arquivo.

14.4 Classe File

  • Classe File – útil para recuperar informações sobre arquivos e diretórios no disco.
  • Os objetos da classe File não abrem arquivos nem fornecem capacidades de processamento de arquivos.

Criando objetos File

  • A classe File fornece quatro construtores:

1. Recebe String que especifica nome e caminho

(localização do arquivo no disco).

2. Recebe duas String s: a primeira especificando o

caminho e a segunda especificando o nome do arquivo.

3. Recebe o objeto File que especifica o caminho e String

que especifica o nome do arquivo.

4. Recebe o objeto URI que especifica o nome e a localização

do arquivo.

  • Diferentes tipos de caminhos:
    • Caminho absoluto – contém todos os diretórios desde o

diretório-raiz que levam a um arquivo ou diretório

específico.

  • Caminho relativo – normalmente inicia do diretório em

que o aplicativo começou a execução.

Figura14.3 | Métodos File.
(Parte 2 de 2.)

Método Descrição String getAbsolutePath() Retorna uma string com o caminho absoluto do arquivo ou diretório. String getName() Retorna uma string com o nome do arquivo ou diretório. String getPath() Retorna uma string com o caminho do arquivo ou diretório. String getParent() Retorna uma string com o diretório-pai do arquivo ou diretório (isto é, o diretório em que o arquivo ou diretório pode ser localizado). long length() Retorna o comprimento do arquivo, em bytes. Se o objeto File representar um diretório, 0 é retornado. long lastModified() Retorna uma representação dependente de plataforma da data/hora em que o arquivo ou diretório for modificado pela última vez. O valor retornado é útil somente para comparação com outros valores retornados por esse método. String[] list() Retorna um array de strings que representam o conteúdo de um diretório. Retorna null se o objeto File não representar um diretório.

Dica de prevenção de erro 14.

O método File utiliza isFile para determinar se um objeto File representa um arquivo (não um diretório) antes de tentar abrir o arquivo.

Resumo

FileDemonstration
.java
(1 de 2)

1 // Fig. 14.4: FileDemonstration.java 2 // Demonstrando a classe File. 3 import java.io.File; 4 5 public class FileDemonstration 6 { 7 // exibe informações sobre o arquivo que o usuário especifica 8 public void analyzePath( String path ) 9 { 10 // cria o objeto File com base na entrada de usuário 11 File name = new File( path ); 12 13 if ( name.exists() ) // se o nome existir, gera saída das informações sobre ele 14 { 15 // exibe informações sobre o arquivo (ou diretório) 16 System.out.printf( 17 "%s%s\n%s\n%s\n%s\n%s%s\n%s%s\n%s%s\n%s%s\n%s%s", 18 name.getName(), " exists", 19 ( name.isFile()? "is a file" : "is not a file" ), 20 ( name.isDirectory()? "is a directory" : 21 "is not a directory" ), 22 ( name.isAbsolute()? "is absolute path" : 23 "is not absolute path" ), "Last modified: ", 24 name.lastModified(), "Length: ", name.length(), 25 "Path: ", name.getPath(), "Absolute path: ", 26 name.getAbsolutePath(), "Parent: ", name.getParent() ); 27

Retorna true se o arquivo ou
diretório especificado existir
Recupera o nome do arquivo ou
diretório
Retorna true se name for
um arquivo, não um
diretório
Retorna true se name for
um diretório, não um
Retorna true arquivo se path for
um caminho absoluto
Recupera a data/hora da
última modificação em um
arquivo ou diretório (valor
dependente do sistema)
Recupera o comprimento em
bytes do arquivo
Recupera o caminho inserido como
uma string
Recupera o caminho absoluto do arquivo
ou diretório
Cria um novo objeto File; o
usuário especifica o nome de
arquivo e caminho
Recupera o diretório-pai
(caminho onde o arquivo ou
diretório do objeto File ou
pode ser localizado)

Resumo FileDemonstration .java

(2 de 2)

28 if ( name.isDirectory() ) // gera listagem de diretório 29 { 30 String directory[] = name.list(); 31 System.out.println( "\n\nDirectory contents:\n" ); 32 33 for ( String directoryName : directory ) 34 System.out.printf( "%s\n", directoryName ); 35 } // fim de 36 } // fim do if externo 37 else // não for arquivo ou diretório, gera saída da mensagem de erro 38 { 39 System.out.printf( "%s %s", path, "does not exist." ); 40 } // fim de else 41 } // fim do método analyzePath 42 } // fim da classe FileDemonstration

Retorna true se File for um diretório, não
um arquivo
Recupera e exibe o
conteúdo do diretório