Post on 22-Sep-2020
Entrada e SaídaExercício
Linguagem Java
Adenilso da Silva Simão
01/09/05
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Introdução
I Onde conseguir informações sobre os pacotes:
I http://java.sun.com/j2se/1.5.0/docs/api/
I Tutorial
I http://java.sun.com/docs/books/tutorial/essential/io/overview.html
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Introdução (II)
I Tanto a entrada quanto a saída são consideradas fluxos
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Introdução (III)
I Para cada fonte de entrada, deve-se designar um fluxoI TecladoI ArquivoI ModemI Rede
I O mesmo vale para a saída
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Introdução (IV)
I Em java, existem duas categorias de fluxosI Fluxos de caracteres
I Lida com caracteres unicode 16 bitsI Fluxos de bytes
I Lida com bytes de 8 bits
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Fluxos de Caracteres
I A maioria dos aplicativos usam informações textuaisI Fluxos de caracteres são mais adequados
I UnicodeI Super tabela de caracteres
I Duas classes básicasI Reader
I Ler informaçõesI Writer
I Escrever informações
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
ReadersI Existem vários tipos de Readers
I Alguns simplesmente usam a fonte de dadosI Aparecem em cinza
I Alguns fornecem algum processamentoI Aparecem em branco
I
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
WritersI De forma análoga, existem diversos tipos de Writers
I Observe que nome da OutputStreamWriter está trocado porengano
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
ExemplosI Vamos criar uma classe que escreve em um arquivo
1 import java . i o .∗ ;
23 class UmaClasse {
4 publ ic void f ( S t r i n g f i lename ) {
5 F i l e W r i t e r fw ;
6 t r y {
7 fw = new F i l e W r i t e r ( f i lename ) ;
8 fw . w r i t e ( "Nao t i n h a medo o t a l Joao de Santo C r i s t o \ n " ) ;
9 fw . w r i t e ( " Era o que todos diz iam quando ele se perdeu \ n " ) ;
10 fw . w r i t e ( " Deixou pra t r a s todo o marasmo da fazenda \ n " ) ;
11 fw . c lose ( ) ;
12 }
13 catch ( IOExcept ion e ) {
14 System . e r r . p r i n t l n ( " Arquivo nao encontrado ! ! " ) ;
15 }
16 }
17 }
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Exemplos (II)
I Para usar o println?I Use um PrintWriter1 import java . i o .∗ ;
23 class UmaClasse {
4 publ ic void f ( S t r i n g f i lename ) {
5 P r i n t W r i t e r fw ;
6 t r y {
7 fw = new P r i n t W r i t e r (new F i l e W r i t e r ( f i lename ) ) ;
8 fw . p r i n t l n ( 5 ) ;
9 fw . c lose ( ) ;
10 }
11 catch ( IOExcept ion e ) {
12 System . e r r . p r i n t l n ( " Arquivo nao encontrado ! ! " ) ;
13 }
14 }
15 }
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Exemplos (III)
I Para escrever na saída padrão?
1 import java . i o .∗ ;
23 class UmaClasse {
4 publ ic void f ( ) {
5 System . out . p r i n t l n ( "Nao t i n h a medo o t a l Joao de Santo C r i s t o " ) ;
6 System . out . p r i n t l n ( " Era o que todos diz iam quando ele se perdeu " ) ;
7 System . out . p r i n t l n ( " Deixou pra t r a s todo o marasmo da fazenda " ) ;
8 }
9 }
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Exemplos (IV)
I Uma f mais genérica
1 import java . i o .∗ ;
23 class UmaClasse {
4 publ ic void f ( Wr i t e r fw ) {
5 t r y {
6 fw . w r i t e ( "Nao t i n h a medo o t a l Joao de Santo C r i s t o \ n " ) ;
7 fw . w r i t e ( " Era o que todos diz iam quando ele se perdeu \ n " ) ;
8 fw . w r i t e ( " Deixou pra t r a s todo o marasmo da fazenda \ n " ) ;
9 fw . f l u s h ( ) ;
10 }
11 catch ( IOExcept ion e ) {
12 System . e r r . p r i n t l n ( " Problemas ao escrever ! ! " ) ;
13 }
14 }
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Exemplos (V)
I Usando f para escrever na saída padrão
1 OutputStreamWriter osw =2 new OutputStreamWriter ( System . out ) ;3 f ( osw ) ;
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Exemplos (VI)
I Usando f para escrever em uma arquivo
1 F i l e W r i t e r fw = new F i l e W r i t e r ( " data . dat " ) ;2 f ( fw ) ;
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Exemplos (VII)
I Usando f para escrever em uma string
1 S t r i n g W r i t e r sw = new S t r i n g W r i t e r ( ) ;2 f ( sw ) ;3 S t r i n g s t r = sw . t o S t r i n g ( ) ;
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Exemplos (VIII)I Como ler de um fluxo?1 import java . i o .∗ ;
23 class UmaClasse {
4 void f ( ) {
5 Fi leReader f r = nu l l ;
6 t r y {
7 f r = new Fi leReader ( " data . dat " ) ;
8 i n t r ;
9 while ( ( r = f r . read ( ) ) != −1) {
10 / / Faz algo com o carac te r !
11 }
12 }
13 catch ( IOExcept ion e ) {
14 / / T ra ta r a excecao !
15 }
16 }
17 }
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Exemplos (IX)I Como ler uma linha inteira?
I BufferedReader1 import java . i o .∗ ;
23 class UmaClasse {
4 publ ic s t a t i c void main ( S t r i n g args [ ] ) {
5 BufferedReader br = nu l l ;
6 t r y {
7 br = new BufferedReader (new Fi leReader ( " data . dat " ) ) ;
8 S t r i n g l i n e ;
9 while ( ( l i n e = br . readLine ( ) ) != nu l l ) {
10 System . out . p r i n t l n ( l i n e ) ;
11 }
12 }
13 catch ( IOExcept ion e ) {
14 System . e r r . p r i n t l n ( e ) ;
15 }
16 }
17 }
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
IntroduçãoFluxos de CaracteresReadersWritersExemplosFluxo de bytes
Fluxo de bytes
I Conceitos similares se aplicam aos fluxos de bytesI InputStreamI OutputStream
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
Cópia de FluxosLista de Arquivos
Cópia de Fluxos
I Defina um método que copia o conteúdo de um fluxo decaracteres para outro
I Deve ser usado da seguinte forma
1 streamCopy ( r , w ) ;
I Sendo que r é um Reader e w é um Writer
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
Cópia de FluxosLista de Arquivos
Lista de Arquivos
I Crie um tipo de fluxo de entrada que é construído com um arrayde strings
I Cada string é o nome de um arquivoI Quando for solicitado, o fluxo deve ler os caracteres dos arquivos
da lista, na ordem que aparecem
Adenilso da Silva Simão Linguagem Java
Entrada e SaídaExercício
Cópia de FluxosLista de Arquivos
Lista de Arquivos (II)
I Exemplo de uso
1 S t r i n g f i lenames [ ] = { " data1 . dat " , " data2 . dat " ,2 " data3 . dat " } ;34 MyFi leLis tReader m f l r = new MyFi leLis tReader ( f i lenames ) ;5 t r y {6 i n t r ;7 while ( ( r = m f l r . read ( ) ) != −1) {8 / / Faca alguma coisa9 }10 }11 catch ( IOExcept ion e ) {12 / / T ra ta r a excecao ! !13 }
Adenilso da Silva Simão Linguagem Java