Вы находитесь на странице: 1из 23

Bacharelado em Cincia e Tecnologia

BC-0502 Mtodos e Algoritmos Computacionais

Arquivos e Excees

Ivan Casella ivan.casella@ufabc.edu.br 2o Trimestre, 200

BC-0502 Mtodos e Algoritmos Computacionais

Arquivos

BC-0502 Mtodos e Algoritmos Computacionais

Arquivos

Streams (Fluxo)
Um arquivo em Java tratado como um fluxo seqencial de bytes Conceito poderoso que simplifica o tratamento de opera !es de entrada e sa"da de dados (#$%) &ambm usados para comunica 'o entre computadores de uma rede

Java tem mais de () tipos de streams* ou se+a* mais de () classes para tratar de streams,

BC-0502 Mtodos e Algoritmos Computacionais

Arquivos

Streams de -ytes
.ro/ramas usam streams de bytes para reali0ar entrada e sa"da de bytes (ou se+a* seq1ncias de 2 bits)

3ntrada

Super4classe5 #nputStream 67rias sub4classes para entrada de dados

Sa"da

Super4classe5 %utputStream 67rias sub4classes para sa"da de dados

BC-0502 Mtodos e Algoritmos Computacionais

Arquivos

Streams de Caracteres
.ro/ramas usam streams de caracteres para reali0ar opera !es de entrada e sa"da de dados em caracteres de 8( bits (Unicode)

3ntrada

Super4classe5 9eader 67rias sub4classes para entrada de dados Super4classe5 :riter 67rias sub4classes para sa"da de dados

Sa"da

BC-0502 Mtodos e Algoritmos Computacionais

Arquivos

.ersist1ncia ;endo e 3screvendo <ados


3xistem v7rias classes para trabal=ar com arquivos em Java Classes existentes na >.# podem simplificar muitas atividades

<uas aborda/ens s'o mais comuns para implementar persist1ncia de ob+etos


>rma0enar dados em arquivos de texto Usar seriali0a 'o

BC-0502 Mtodos e Algoritmos Computacionais

Excees e Arquivos

BC-0502 Mtodos e Algoritmos Computacionais

Excees

Sempre que tratar escrita e leitura de arquivos em Java necess7rio usar o tratamento de exce !es
&ry ? @ Catc= ( ) ? @

3xemplo de CAdi/o

try { String opcaoStr= JOptionPane.showInputDialog(Entre opcao) int opcao= Integer.parseInt(opcaoStr) ! "atch (E#ception e) { JOptionPane.show$essageDialog(null%&or'ato (o )o.Erra(o) !

BC-0502 Mtodos e Algoritmos Computacionais

Arquivos de Texto

BC-0502 Mtodos e Algoritmos Computacionais

Arquivos

>rquivos de &exto
>tributos de ob+etos s'o salvos em arquivos um por um* separados por al/um caractere (eB/B C*D ) >rquivo texto pode ser editado e visuali0ado facilmente por =umanos Simples para fa0er intercEmbio de dados entre pro/ramas diferentes

BC-0502 Mtodos e Algoritmos Computacionais

!eitura de Arquivo com Classes "eader

File9eader5 stream de conex'o


Uma opera 'o de entrada l1 um caractere

-uffered9eader5 entrada buferi0ada


Uma opera 'o de entrada l1 v7rios caracteres

3xemplo de cAdi/o
&ile*ea(er + = new &ile*ea(er(a,ui-o.t#t.) /u++ere(*ea(er 0r = new /u++ere(*ea(er(+) String linha = 0r.rea(1ine()

BC-0502 Mtodos e Algoritmos Computacionais

Escrita em Arquivo com Classes #riter

File:riter5 stream de conex'o


Uma opera 'o de sa"da /rava um caractere

-uffered:riter5 sa"da buferi0ada


>rma0ena os dados de sa"da a serem /ravados

.rint:riter5 sa"da de ob+etos em texto


%ferece v7rios mtodos para /ravar dados

3xemplo de cAdi/o
&ile2riter + = new &ile2riter(ar,ui-o.t#t.) Print2riter pw = new Print2riter (+) pw.println(3ello 2orl(4)

BC-0502 Mtodos e Algoritmos Computacionais

Exem$lo de Arquivo de Texto

3xemplo5 &urma de >lunos


Formato <ese+ado do >rquivo de &exto 5rthur67689%9 :a0riela68;689%9 )ilson6<=689%9 $aria6>96=%9 Jos?68=6@%9 Joana68A6A%9

BC-0502 Mtodos e Algoritmos Computacionais

Exem$lo% Turma de alunos


pu0lic -oi( e#portar5lunos(5lunoBC alunos% int nalunos){ Print2riter pw = new Print2riter(new &ile2riter(.tur'a.t#t.)) +or (int i = 9 i D nalunos iEE){ String linha = String.+or'at(.Fs6F(6F.8+.% alunosBiC.get)o'e()% alunosBiC.getI(a(e()% alunosBiC.get)ota()) pw.println(linha) ! pw.+lush() pw.close() !

BC-0502 Mtodos e Algoritmos Computacionais

Exem$lo% Turma de alunos


pu0lic -oi( i'portar5lunos(Gur'a 'inhaGur'a){ /u++ere(*ea(er 0r= new /u++ere(*ea(er(new &ile*ea(er(.tur'a.t#t.)) String linha StringBC ca'pos = null while ((linha = 0r.rea(1ine()) 4= null){ ca'pos = linha.split(.6.) String no'e = ca'posB9C int i(a(e = Integer.parseInt(ca'posB8C) (ou0le nota = Dou0le.parseDou0le(ca'posB>C.replace(.%.% ...)) 'inhaGur'a.incluir5luno(no'e% i(a(e% nota) ! 0r.close() !

BC-0502 Mtodos e Algoritmos Computacionais

Serializao

BC-0502 Mtodos e Algoritmos Computacionais

&eriali'a(o

Seriali0a 'o (escrita)


File%utputStream5 Stream de conex'o %b+ect%utputStream5 Stream que fa0 a seriali0a 'o

3xemplo de cAdi/o
&ileOutputStrea' out = new &ileOutputStrea'(sa-e.ser) O0HectOutputStrea' oos = new O0HectOutputStrea'(out) oos.writeO0Hect(new Date()) oos.close()

BC-0502 Mtodos e Algoritmos Computacionais

&eriali'a(o

3xemplo de cAdi/o
pu0lic -oi( e#portar5lunos(5lunoBC alunos% int nalunos){ O0HectOutputStrea' os = new O0HectOutputStrea' (new &ileOutputStrea'(.Gur'a.ser.)) os.writeO0Hect(nalunos) +or (int i = 9 i D nalunos os.writeO0Hect(alunosBiC) ! os.close() ! iEE){

BC-0502 Mtodos e Algoritmos Computacionais

&eriali'a(o

3xemplo de cAdi/o
Classe aluno deve ser Seriali07vel
pu0lic class 5luno i'ple'ents SerialiIa0le { J. !

BC-0502 Mtodos e Algoritmos Computacionais

&eriali'a(o

<eseriali0a 'o (leitura)


File#nputStream5 stream de conex'o %b+ect#nputStream5 Stream que fa0 a deseriali0a 'o

3xemplo de cAdi/o
&ileInputStrea' in = new &ileInputStrea'( sa-e.ser ) O0HectInputStrea' ois = new O0HectInputStrea'( in ) Date ( = (Date) ois.rea(O0Hect() ois.close()

BC-0502 Mtodos e Algoritmos Computacionais

&eriali'a(o

3xemplo de cAdi/o
pu0lic -oi( i'portar5lunos(Gur'a 'inhaGur'a){ O0HectInputStrea' os = new O0HectInputStrea' (new &ileInputStrea'(.Gur'a.ser.)) int nu'ero = (Integer) os.rea(O0Hect() +or (int i = 9 i D nu'ero iEE){ 5luno a = (5luno) os.rea(O0Hect() 'inhaGur'a.incluir5luno(a) ! os.close()

BC-0502 Mtodos e Algoritmos Computacionais

&eriali'a(o

Se um ob+eto possui refer1ncias para outros ob+etos (ou arrays)* esses ob+etos s'o tambm seriali0ados Se esses ob+etos* por sua ve0* possuem refer1ncias para outros ob+etos* esses tambm s'o seriali0ados 3 assim por diante 3ssa aborda/em pode ser usada* por exemplo* para fa0er cApias de ob+etos

BC-0502 Mtodos e Algoritmos Computacionais

)I*

Вам также может понравиться