Tipos de Arquivos Arquivos podem armazenar caracteres arquivo

  • Slides: 15
Download presentation
Tipos de Arquivos ● ● ● Arquivos podem armazenar caracteres (arquivo texto) ou bytes

Tipos de Arquivos ● ● ● Arquivos podem armazenar caracteres (arquivo texto) ou bytes (arquivos binários); Na prática, arquivos textos são abertos por editores de texto simples, enquanto que arquivos binários precisam ser abertos por programas específicos; Exemplos de arquivos: Texto (qualquer arquivo que só armazene texto): . txt, . xml, . bat … Binário (possuem uma codificação de bytes específica): . doc, . exe, . zip, …

Abertura de Arquivos ● ● Arquivos podem ser abertos para leitura (arquivo já existente)

Abertura de Arquivos ● ● Arquivos podem ser abertos para leitura (arquivo já existente) ou escrita (tanto faz); Esta abertura é usualmente realizada através da chamada à um construtor de classe apropriado (new): File. Input. Stream e File. Output. Stream para leitura e escrita de arquivos vistos como uma sequência de bytes; File. Reader e File. Writer para leitura e escrita de arquivos vistos como uma sequência de caracteres;

Fechamento de Arquivos ● ● ● Para o fechamento utilizamos o método close(); Antes

Fechamento de Arquivos ● ● ● Para o fechamento utilizamos o método close(); Antes da chamada a este método, o arquivo manipulado fica “bloqueado” para o programa que o utiliza; Por isso, é uma prática recomendável fechar o arquivo imediatamente após a sua utilização.

Exemplo de Leitura de Arquivo Binário import java. io. *; public class Mostra. Arquivo

Exemplo de Leitura de Arquivo Binário import java. io. *; public class Mostra. Arquivo { public static void main(String[] args) { Input. Stream fi = null; int i = -1; try { fi = new File. Input. Stream("c: \teste. txt"); } catch (File. Not. Found. Exception e) { System. out. println("Arquivo não encontrado !!"); } do { try { i = fi. read(); } catch (IOException e) { System. out. println("Arquivo não pode ser lido !!"); } if (i != -1) System. out. print((char) i); } while (i != -1); } }

Exemplo de Leitura de Arquivo Texto import java. io. *; public class Mostra. Arquivo.

Exemplo de Leitura de Arquivo Texto import java. io. *; public class Mostra. Arquivo. Texto { public static void main(String[] args) { Buffered. Reader in = null; try { in = new Buffered. Reader(new File. Reader("c: \teste. txt")); String str; while ((str = in. read. Line()) != null) { System. out. println(str); } in. close(); } catch (IOException e) { } } }

Diferenças na Leitura de Arquivos Texto e Binário ● ● Pudemos observar que o

Diferenças na Leitura de Arquivos Texto e Binário ● ● Pudemos observar que o arquivo binário dado estava sendo processado byte a byte; Em contra-partida, o arquivo texto estava sendo acessado linha por linha (método read. Line()); Por processar vários bytes ao mesmo tempo, a leitura linha por linha é mais simples; Em arquivos binários não há o conceito de linha.

Solução do Segundo Exercício import java. io. *; public class Copia. Arquivo. Texto {

Solução do Segundo Exercício import java. io. *; public class Copia. Arquivo. Texto { public static void main(String[] args) { Buffered. Reader in = null; Buffered. Writer out = null; try { in = new Buffered. Reader(new File. Reader("c: \teste. txt")); out = new Buffered. Writer(new File. Writer("c: \teste 2. txt")); String str; while ((str = in. read. Line()) != null) { out. write(str); } in. close(); out. close(); } catch (IOException e) { } } }

Manipulação de Arquivos Binários ● A manipulação de arquivos binários possibilita mais eficiência no

Manipulação de Arquivos Binários ● A manipulação de arquivos binários possibilita mais eficiência no tratamento de arquivos; ● Para exemplificar, apresentaremos um exemplo de gravação de objetos (serialização); ● Neste exemplo, criaremos um conjunto de objetos, gravaremos estes num arquivo binário, e posteriormente recuperaremos seu conteúdo; ● Para um objeto serializável, sua classe precisa implementar a classe java. io. Serializable; ● Objetos que usualmente não serializáveis são threads, sockets, etc. ● Mais informações: http: //java. sun. com/developer/technical. Articles/Programmi ng/serialization/

Manipulação de Arquivos Binários 1/4 import java. io. *; public class Registro implements Serializable

Manipulação de Arquivos Binários 1/4 import java. io. *; public class Registro implements Serializable { int id; float nota; static int quant = 0; public Registro (float n) { quant++; id = quant; nota = n; }

Manipulação de Arquivos Binários 2/4 public static void main(String[] args) { Inicializa. Registros(); Recupera.

Manipulação de Arquivos Binários 2/4 public static void main(String[] args) { Inicializa. Registros(); Recupera. Registros(); }

Exercícios ● ● Implemente o exemplo de registro de arquivos binários. File. Writer =

Exercícios ● ● Implemente o exemplo de registro de arquivos binários. File. Writer = File. Output. Stream fos (caminho do arquivo) Buffered. Writer = Object. Output. Stream oos(fos) oos. write. Object File. Reader = File. Input. Stream fis (caminho do arquivo) Buffered. Reader = Object. Input. Stream ois(fis) ois. read. Object Implemente um programa que crie um arquivo e depois faça uma cópia do mesmo arquivo de texto.

Manipulação de Arquivos Binários 3/4 public static void Inicializa. Registros() { try { Registro

Manipulação de Arquivos Binários 3/4 public static void Inicializa. Registros() { try { Registro reg = null; File. Output. Stream f = new File. Output. Stream("c: \dados. dat"); Object. Output. Stream fobj = new Object. Output. Stream(f); for (int i=1; i<=10; i++) { reg = new Registro(i); fobj. write. Object(reg); } fobj. close(); f. close(); } catch (File. Not. Found. Exception e) { } catch (IOException e) { } }

Manipulação de Arquivos Binários 4/4 public static void Recupera. Registros() { try { File.

Manipulação de Arquivos Binários 4/4 public static void Recupera. Registros() { try { File. Input. Stream f = new File. Input. Stream("c: \dados. dat"); Object. Input. Stream fobj = new Object. Input. Stream(f); for (int i=1; i<=10; i++) { Registro reg = (Registro)fobj. read. Object(); System. out. print("Id: " + reg. id); System. out. println(" Nota: " + reg. nota); } fobj. close(); f. close(); } catch (File. Not. Found. Exception e) { } catch (IOException e) { } catch (Class. Not. Found. Exception e) { } }

Parte da Hierarquia de Classes de java. io

Parte da Hierarquia de Classes de java. io