13_O pacote java.io

Propaganda
O pacote java.io
Material baseado na apostila FJ-11: Java e
Orientação a Objetos do curso Caelum,
Ensino e Inovação, disponível para download
em http://www.caelum.com.br/apostilas/
1
Objetivos
•
ler e escrever bytes, caracteres e Strings de/para a entrada e saída
padrão;
•
ler e escrever bytes, caracteres e Strings de/para arquivos;
•
utilizar buffers para agilizar a leitura e escrita através de fluxos;
•
usar Scanner e PrintStream.
2
InputStream, InputStreamReader e
BufferedReader
•
Diagrama de Classes
3
Lendo um byte de um arquivo
•
Problema com esse código
Cenário: Um arquivo codificado usando a tabela de caracteres
UTF-8, contendo um ç como primeiro caracter.
A saída do programa seria:
Ã
4
Lendo um caracter de um arquivo
•
Para recuperar um caractere com o encoding correto, usamos uma
instância de um Reader
•
No mesmo cenário do slide anterior, este programa imprimiria agora
corretamente um ç.
5
BufferedReader
•
Observe que a classe Reader tem somente um método read() que
retorna um inteiro. Como fazer para ler um String? Poderíamos
concatenar os caracteres lidos e formar Strings, mas isso daria muito
trabalho. Uma solução melhor é usar a classe BufferedReader que
“decora” um Reader com a capacidade de ler Strings.
6
Composição de Classes
•
A composição de classes que montamos até agora tem a forma:
7
Lendo um arquivo para a saída padrão
•
Nosso programa anterior lia apenas a primeira linha do arquivo.
Vamos modificar o programa com o uso de um laço, para ler todo o
arquivo para a saída padrão.
8
InputStream e Polimorfismo
•
O programa anterior poderia ser facilmente modificado de modo a ler
streams de bytes de qualquer InputStream
9
A analogia para a escrita
10
Diagrama de Classes
11
Escrevendo Strings em um arquivo de saída
•
O método write() do BufferedWriter não insere os caracteres de
quebra de linha. Para isso você pode usar o método newLine().
12
Serializando objetos
•
Objetos podem ser serializados para serem persistidos ou para
serem transmitidos de uma camada à outra da aplicação.
•
Uma “espiada” no arquivo de saída:
13
Desserializando objetos
•
Objetos podem ser desserializados. O processo de desserialização
instancia um novo objeto e inicializa os atributos com os valores lidos
do stream de entrada.
14
As classes Scanner e PrintStream
•
A partir da versão 5 do Java temos a classe Scanner,
especializada em ler InputStreams.
•
Com a classe Scanner, não é mais necessário criar
instâncias de Readers ou BufferedReaders.
•
A classe Scanner, combinada com a classe PrintStream
(especializada em escrever em OutputStreams) facilita
muito as operações de entrada a partir de arquivos ou
teclado e saída em arquivos.
15
A classe Scanner
16
A classe PrintStream
17
As classes Scanner e PrintStream
•
Exemplo: Cópia do conteúdo de um arquivo para a saída padrão
18
As classes Scanner e PrintStream
•
Exemplo: Cópia de Strings lidas do teclado para um arquivo de saída
19
Download