You are on page 1of 8

Computação e Informática

Faculdade de

Linguagem de Programação II
Aula 9: Pacote java.io
Prof. Ms. Daniel Arndt Alves http://www.progdan.pro.br

Tópicos da Aula
Organização do pacote java.io Classe File Interface FilenameFilter Entrada InputStream FileInputStream DataInputStream
2

Tópicos da Aula

Saída OutputStream FileOutputStream DataOutputStream

3

Estrutura básica do pacote java.io

4

String nome) File(String diretorio.Estrutura básica do pacote java.io 5 CLASSE File Classe que descreve os vários atributos de um arquivo ou diretório.String nome) construtor com nome separado do caminho construtor com diretório e nome do arquivo construtor de diretórios/arquivos 7 Construtores e métodos da classe File MÉTODOS boolean canRead() boolean canWrite() boolean delete() boolean exists() boolean isAbsolute() boolean isDirectory() boolean isFile() boolean mKdir() boolean mKdirs() boolean renameTo(String novo) arquivo/diretório pode ser lido pode-se gravar no arquivo/diretório deleta arquivo/diretório verifica se arquivo/diretório existem verifica se caminho é absoluto verifica se objeto é diretório verifica se objeto é arquivo cira diretório do objeto cria diretórios do caminho mudar nome do arquivo/diretório para novo 8 . tais como: ! modos de acesso ( leitura/escrita ) ! caminho absoluto ! caminho relativo ! tipo ( diretório/arquivo ) Além disto. 6 Construtores e métodos da classe File CONSTRUTORES File(String caminho) throws NullPointException File(String caminho. permite criar de diretórios e renomear arquivos/diretórios.

*. O método mais importante desta interface é: ! public boolean accept(File dir. segundo um filtro f long lastModified() data da última modificação.String nome){ // Retorna true se nome termina com uma determinada extensão return (nome. } } 11 Utilização da classe Filtrado class listagem{ public static void main(String args[]){ FilenameFilter arquivo=new Filtrado(“.endsWith(extensao)).extensao=extensao. } public boolean accept(File dir. lista todos os arquivos e subdiretórios de um determinado diretório String [] list (FilenameFilter f) lista todos os arquivos e subdiretórios de um determinado diretório. public class Filtrado extends File implements FilenameFilter{ String extensao. no formato long 9 Interface FilenameFilter Conjunto de protótipos de métodos para filtrar consultas a respeito de arquivos e diretórios.. localizado em dir. ou não. para o resultado da filtragem.list(arquivo). // Extensão de um arquivo Filtrado(String extensao){ this. String [] aceitos=diretorio.Outros métodos da classe File String getAbsolutePath() String getName() String getParent() String getPath() String[] list() pega caminho absoluto do objeto pega nome do arquivo/diretório/caminho pega diretório-pai pega caminho relativo. que permite aceitar.. File diretorio=new File(“c:\\java”). arquivo com // lista todos os // a extensão .io.java do diretório // c:\java .java”). } } 12 . o arquivo de nome nome_arq. 10 Exemplo de File com FilenameFilter import java.String nome_arq ).

que permite a leitura somente a nível de bytes. ! DataInputStream. classe abstrata que descreve as características básica de uma stream de entrada. na instanciação desta classe. etc). que permite a leitura a nível de tipos básicos (inteiros. longs. IOException FileInputStream(File) construtor com objeto File throws FileNotFoundException. CONSTRUTORES FileInputStream(String) construtor com nome e diretorio no formato String throws FileNotFoundException. entre outros métodos. efetivamente. os seguintes métodos básicos: int available() throws IOException void reset() throws IOException //posiciona o ponteiro do arquivo no //no início //devolve o número de bytes do arquivo 15 Classe FileInputStream A abertura do arquivo dá-se. IOException FileInputStream(FileDescriptor) throws FileNotFoundException.Entrada Na maioria das situações. floats. 13 Mecanismo de acesso em camadas A leitura de dados na classe DataInputStream é feita através de uma camada formada sobre a camada da classe FileInputStream: 14 Classe InputStream A classe abstrata InputStream possui. ! FileInputStream. as operações de entrada em Java são feitas com base nas seguintes classes: ! InputStream. IOException construtor com descritor de arquivo 16 .

} } } 18 Classe DataInputStream Como a abertura do arquivo já foi feita numa camada mais baixa.int pos.available(). class exemplo_leitura{ public static void main(String args[]){ FileInputStream arq. esta classe somente se preocupa em ler a quantidade de bytes necessários para formar o tipo de retorno.*. cujo parâmetro é uma classe derivada de InputStream (geralmente FileInputStream): DataInputStream(InputStream entrada) ! ! 19 Alguns métodos da classe DataInputStream boolean readBoolean() throws IOException byte readByte() throws IOException char readChar() throws IOException double readDouble() throws IOException float readFloat() throws IOException long readLong() throws IOexception int readInt() throws IOException String readLine() throws IOException String readUFT() throws IOException leitura de booleanos leitura de bytes leitura de chars leitura de doubles leitura de floats leitura de longs leitura de inteiros leitura de uma linha do arquivo (UNICODE) leitura de uma linha do arquivo (ASCII) 20 . arq.out.close().println(e). armazenando a partir da posição pos...read(). // Vetor para armazenar os bytes lidos for(int i=0.exe”).i<tam.println(e). Possui um único construtor.Alguns métodos da classe FileInputStream int read() throws IOException int read(byte b[]) throws IOException int read(byte b[]. } catch(FileNotFoundException e){ System. int tam.int tam) throws IOException void close() leitura de vetor de bytes. } catch(IOException e){System.i++) b[i]= arq. tam bytes fecha o arquivo leitura de um vetor de bytes (b) leitura de um byte do arquivo 17 Exemplo de leitura com FileInputStream import java. // Leitura de bytes . tam=arq. // Recupera quantidade de bytes int b[]=new int[tam].io.out. // Tamanho do arquivo try{ arq=new FileInputStream(“codigo.

println(e). floats. // Camada externa System.out.Exemplo de leitura com DataInputStream import java. ! DataOutputStream. que permite a escrita somente a nível de bytes. que permite a escrita a nível de tipos básicos (inteiros.out. 22 Mecanismo de escrita em camadas A escrita de dados na classe DataOutputStream é feita através de uma camada formada sobre a camada da classe FileOutputStream: 23 Classe OutputStream A classe abstrata OutputStream possui. entre outros métodos.. 24 . DataInputStream entrada_alta. entrada_baixa. InputStream entrada_baixa.. } catch(FileNotFoundException e){ System.out. etc).readInt()).”principal.io.println(e). } catch(IOException e){System. ! FileOutputStream . classe abstrata que descreve as características básica de uma stream de saída. class exemplo_leitura{ public static void main(String args[]){ File arq=new File(“C:\\java”. o seguinte método básico: void flush() throws IOException descarrega o buffer de arquivo no arquivo. // Camada interna entrada_alta=new DataInputStream(entrada_baixa).class”). // Leitura de um inteiro e impressão .*.} } } 21 Saída Na maioria das situações.close(). longs. try{ entrada_baixa=new FileInputStream(arq). as operações de saída em Java são feitas com base nas seguintes classes: ! OutputStream.println(entrada_alta.

int tam) throws IOException void close() escrita de vetor de bytes. tam bytes fecha o arquivo escrita de um vetor de bytes (b) escrita de um byte do arquivo 26 Classe DataOutputStream Como a abertura do arquivo já foi feita numa camada mais baixa. CONTRUTORES FileOutputStream(String) throws FileNotFoundException. IOException construtor com descritor de arquivo construtor com objeto File construtor com nome e diretório no formato String 25 Alguns métodos da classe FileOutputStream void write(byte) throws IOException void write(byte b[]) throws IOException void write(byte b[]. cujo parâmetro é uma classe derivada de OutputStream (geralmente FileOutputStream): DataOutputStream(OutputStream saída) ! ! 27 Alguns métodos da classe DataOutputStream void writeBoolean(boolean) throws IOException void writeByte(byte) throws IOException void writeChar(char) throws IOException void writeDouble(double) throws IOException void writeFloat(float) throws IOException void writeLong(long) throws IOexception void writeInt(int) throws IOException void writeLine(String) throws IOException void writeUFT(String) throws IOException escrita de booleanos escrita de bytes escrita de chars escrita de doubles escrita de floats escrita de longs escrita de inteiros escrita de uma linha do arquivo (UNICODE) escrita de uma linha do arquivo (ASCII) 28 . efetivamente. esta classe somente se preocupa em gravar a quantidade de bytes formadores do tipo a ser gravado. armazenando a partir da posição pos. Possui um único construtor.Classe FileOutputStream A abertura do arquivo para escrita dá-se.int pos. na instanciação desta classe. IOException FileOutputStream(File) throws FileNotFoundException. IOException FileOutputStream(FileDescriptor) throws FileNotFoundException.

saida_baixa. Daniel Arndt Alves http://www.println(e).class”).pro. try{ while(true) saida_alta. } catch(IOException e){System.} } } 30 Computação e Informática Faculdade de Obrigado Prof. // Camada interna entrada_alta=new DataInputStream(entrada_baixa). Ms.println(e).progdan. OutputStream saida_baixa.”principal. entrada_baixa.out. } catch(FileNotFoundException e){ System. } catch(EOFException e). 29 Exemplo de escrita com DataOutputStream try{ entrada_baixa=new FileInputStream(arq).class”).writeInt(entrada_alta. class exemplo_gravação{ public static void main(String args[]){ File arq=new File(“C:\\java”.*.io. File arq2=new File(“C:\\java”.Exemplo de escrita com DataOutputStream import java.out.readInt()). DataInputStream entrada_alta. // Camada externa saida_baixa=new FileOutputStream(arq2). DataOutputStream saida_alta.close().close(). saida_alta=new DataOutputStream(saida_baixa).”principal2. InputStream entrada_baixa.br .