Upload
lotte
View
22
Download
0
Embed Size (px)
DESCRIPTION
Linguagens de Programação. Fluxo de Dados: Entrada e Saída. Um Pacotes para E/S. O pacote java.io fornece um grande número de classes para tratar entrada e saída de dados transferência de dados do programa para fontes externas e vice-versa - PowerPoint PPT Presentation
Citation preview
Linguagens de ProgramaçãoLinguagens de Programação
Fluxo de Dados:Fluxo de Dados:
Entrada e SaídaEntrada e Saída
2
Um Pacotes para E/SUm Pacotes para E/S
O pacote O pacote java.io fornece um grande número fornece um grande número de classes para tratar entrada e saída de de classes para tratar entrada e saída de dadosdados transferência de dados do programa para fontes transferência de dados do programa para fontes
externas e vice-versaexternas e vice-versa entrada e saída de dados envolve o uso de fluxos entrada e saída de dados envolve o uso de fluxos
((streamsstreams))
3
Um Pacotes para E/SUm Pacotes para E/S
Dados sendo enviados para um programaDados sendo enviados para um programa
Dados sendo enviados por um programaDados sendo enviados por um programa
4
Fluxo de InformaçõesFluxo de Informações
Sequência de bytes que fluem para Sequência de bytes que fluem para dentro ou para fora do programadentro ou para fora do programa
5
Copiando arquivos (Copiando arquivos (P1P1)–byte streams)–byte streams
FileInputStream in = FileInputStream in = nullnull;; FileOutputStream out = FileOutputStream out = nullnull;; trytry { { in = in = newnew FileInputStream("ensinamento.txt"); //http://www.cin.ufpe.br/~maod/lpoo/ensinamento.txt FileInputStream("ensinamento.txt"); //http://www.cin.ufpe.br/~maod/lpoo/ensinamento.txt out = out = newnew FileOutputStream("outroarquivo.txt"); FileOutputStream("outroarquivo.txt"); intint c; c;
whilewhile ((c = in.read()) != -1) { ((c = in.read()) != -1) { out.write(c);out.write(c); }}
} } finallyfinally { { ifif (in != (in != nullnull) {) { in.close();in.close(); }} ifif (out != (out != nullnull) {) { out.close();out.close(); }} }}
6
Copiando arquivosCopiando arquivos
Notar que:Notar que: read() retorna um valor inteiroread() retorna um valor inteiro É importante para identificar o fim de É importante para identificar o fim de arquivo = “-1”arquivo = “-1”
Sempre feche as streamsSempre feche as streams Byte streams devem ser usados apenas Byte streams devem ser usados apenas com entrada/saída de dados primitivoscom entrada/saída de dados primitivos
7
StreamsStreams
Um Um streamstream é uma abstração de um fluxo é uma abstração de um fluxo contínuo de dados em uma única direçãocontínuo de dados em uma única direção
As classes que manipulam streams podem As classes que manipulam streams podem ser agrupadas em dois tipos:ser agrupadas em dois tipos: byte streamsbyte streams
classes InputStream e OutputStreamclasses InputStream e OutputStream
character streamscharacter streamsclasses Reader e Writerclasses Reader e Writer
8
Character streamsCharacter streams
Quando a internacionalização é a prioridadeQuando a internacionalização é a prioridade Faz as adaptações automaticamenteFaz as adaptações automaticamente Classes usadas:Classes usadas:
ReaderReader WriterWriter FileReaderFileReader FileWriterFileWriter
9
Copiando (Copiando (P2P2)–character streams)–character streams
FileReader inputStream = null; FileReader inputStream = null; FileWriter outputStream = null; FileWriter outputStream = null; try { inputStream = new FileReader(“amizade.txt"); try { inputStream = new FileReader(“amizade.txt");
outputStream = new FileWriter(“outroarquivo2.txt"); outputStream = new FileWriter(“outroarquivo2.txt"); int c; int c; while ((c = inputStream.read()) != -1) while ((c = inputStream.read()) != -1) { outputStream.write(c); } } { outputStream.write(c); } } finally { if (inputStream != null) finally { if (inputStream != null)
{ inputStream.close(); } { inputStream.close(); } if (outputStream != null) if (outputStream != null)
{ outputStream.close(); }{ outputStream.close(); }} } } } } }
10
Line-oriented I/OLine-oriented I/O
I/O de caracteres ocorrem em grandes quantidadesI/O de caracteres ocorrem em grandes quantidades I/O orientada a linha de caracteres permite ler uma I/O orientada a linha de caracteres permite ler uma
sequência de caracteres terminada por:sequência de caracteres terminada por: carriage-return/line-feed sequence(“\r\n”)carriage-return/line-feed sequence(“\r\n”) carriage-return(“\r”)carriage-return(“\r”) line-feed(“\n”)line-feed(“\n”)
Classes usadasClasses usadas BufferredReader and PrintWriterBufferredReader and PrintWriter
11
Line-oriented I/O – (Line-oriented I/O – (P3P3)) FileReader inputStream = FileReader inputStream = nullnull;; FileWriter outputStream = FileWriter outputStream = nullnull;;
trytry { { inputStream = inputStream = newnew FileReader("amor.txt"); FileReader("amor.txt"); outputStream = outputStream = newnew FileWriter("arquivo.txt"); FileWriter("arquivo.txt");
intint c; c; whilewhile ((c = inputStream.read()) != -1) { ((c = inputStream.read()) != -1) { outputStream.write(c);outputStream.write(c); }} }}
12
ExercícioExercício
Seja o seguinte registro:Seja o seguinte registro: nome, idade, sexo, estadoCivil;nome, idade, sexo, estadoCivil;
Utilizar a entrada/saída de streams de caracteres Utilizar a entrada/saída de streams de caracteres para criar um programa para gravar em um arquivo para criar um programa para gravar em um arquivo os dados formatados do registro acima;os dados formatados do registro acima;
Utilizar a entrada/saída de streams de caracteres Utilizar a entrada/saída de streams de caracteres para criar um programa para ler de um arquivo os para criar um programa para ler de um arquivo os dados formatados gravados em um arquivo;dados formatados gravados em um arquivo;
13
A classe ScannerA classe Scanner
Objetos da classe Scanner são úteis para formatar Objetos da classe Scanner são úteis para formatar entradas separando os campos em “white spaces”entradas separando os campos em “white spaces” '\u0009' HORIZONTAL TABULATION. '\u0009' HORIZONTAL TABULATION. '\u000A', LINE FEED.'\u000A', LINE FEED. '\u000B', VERTICAL TABULATION. '\u000B', VERTICAL TABULATION. '\u000C', FORM FEED. '\u000C', FORM FEED. '\u000D', CARRIAGE RETURN. '\u000D', CARRIAGE RETURN.
Usando outro delimitadorUsando outro delimitador s.useDelimiter(",\\s*");s.useDelimiter(",\\s*");
14
A classe ScannerA classe Scanner Scanner s = Scanner s = nullnull;; trytry { { s = s = newnew Scanner( Scanner(newnew BufferedReader( BufferedReader(new new
FileReader("ausencia.txt")));FileReader("ausencia.txt"))); // s.useDelimiter(",\\s*");// s.useDelimiter(",\\s*"); whilewhile (s.hasNext()) { (s.hasNext()) { System.System.outout.println(s.next());.println(s.next()); }} } } finallyfinally { { ifif (s != (s != nullnull) {) { s.close();s.close(); }} }}