1 / 14

Linguagens de Programação

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

lotte
Download Presentation

Linguagens de Programação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linguagens de Programação Fluxo de Dados: Entrada e Saída

  2. 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 • entrada e saída de dados envolve o uso de fluxos (streams)

  3. Um Pacotes para E/S • Dados sendo enviados para um programa • Dados sendo enviados por um programa

  4. Fluxo de Informações • Sequência de bytes que fluem para dentro ou para fora do programa

  5. Copiando arquivos (P1)–byte streams • FileInputStream in = null; • FileOutputStream out = null; • try { • in = new FileInputStream("ensinamento.txt"); //http://www.cin.ufpe.br/~maod/lpoo/ensinamento.txt • out = new FileOutputStream("outroarquivo.txt"); • int c; • while ((c = in.read()) != -1) { • out.write(c); • } • } finally { • if (in != null) { • in.close(); • } • if (out != null) { • out.close(); • } • }

  6. Copiando arquivos • Notar que: • read() retorna um valor inteiro • É importante para identificar o fim de arquivo = “-1” • Sempre feche as streams • Byte streams devem ser usados apenas com entrada/saída de dados primitivos

  7. Streams • Um stream é uma abstração de um fluxo contínuo de dados em uma única direção • As classes que manipulam streams podem ser agrupadas em dois tipos: • byte streams • classes InputStream e OutputStream • character streams • classes Reader e Writer

  8. Character streams • Quando a internacionalização é a prioridade • Faz as adaptações automaticamente • Classes usadas: • Reader • Writer • FileReader • FileWriter

  9. Copiando (P2)–character streams FileReader inputStream = null; FileWriter outputStream = null; try { inputStream = new FileReader(“amizade.txt"); outputStream = new FileWriter(“outroarquivo2.txt"); int c; while ((c = inputStream.read()) != -1) { outputStream.write(c); } } finally { if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } } } }

  10. Line-oriented I/O • I/O de caracteres ocorrem em grandes quantidades • I/O orientada a linha de caracteres permite ler uma sequência de caracteres terminada por: • carriage-return/line-feed sequence(“\r\n”) • carriage-return(“\r”) • line-feed(“\n”) • Classes usadas • BufferredReader and PrintWriter

  11. Line-oriented I/O – (P3) • FileReader inputStream = null; • FileWriter outputStream = null; • try { • inputStream = new FileReader("amor.txt"); • outputStream = new FileWriter("arquivo.txt"); • int c; • while ((c = inputStream.read()) != -1) { • outputStream.write(c); • } • }

  12. Exercício • Seja o seguinte registro: • nome, idade, sexo, estadoCivil; • Utilizar a entrada/saída de streams de caracteres para criar um programa para gravar em um arquivo os dados formatados do registro acima; • Utilizar a entrada/saída de streams de caracteres para criar um programa para ler de um arquivo os dados formatados gravados em um arquivo;

  13. A classe Scanner • Objetos da classe Scanner são úteis para formatar entradas separando os campos em “white spaces” • '\u0009' HORIZONTAL TABULATION. • '\u000A', LINE FEED. • '\u000B', VERTICAL TABULATION. • '\u000C', FORM FEED. • '\u000D', CARRIAGE RETURN. • Usando outro delimitador • s.useDelimiter(",\\s*");

  14. A classe Scanner • Scanner s = null; • try { • s = new Scanner(new BufferedReader(new FileReader("ausencia.txt"))); • // s.useDelimiter(",\\s*"); • while (s.hasNext()) { • System.out.println(s.next()); • } • } finally { • if (s != null) { • s.close(); • } • }

More Related