Entrada/Saída

De MediaWiki
Saltar a: navegación, buscar

Nos paquetes da API de Java java.io e java.nio, almacénase un amplo conxunto de ferramentas para a manipulación da entrada e saída de datos do programa. Entre estas ferramentas estarán as que permiten tanto a manipulación do contido de ficheiros como as que facilitan as comunicacións nunha rede. Comezaremos coas clases incluídas en java.io, que seran subclases de InputStream, OutputStream, Reader e Writer. Utilizaremos tamén a clase File ara manipular información sobre ficheiros e faremos compresión e serialización de datos. No caso do paquete java.nio, a "n" que aparece no seu nome fai referencia a que foi introducido posteriormente a java.io e por tanto era "new I/O" no momento da súa introdución.

Fluxos (Streams)

O tratamento fundamental de datos de E/S baséase na idea da manipulación de fluxos, é dicir, unha secuencia de datos na que se pode colocar nova información (escribir) ou consumir a información que contén (lectura). Cando nos nosos programas utilicemos clases de java.io para, por exemplo, ler ficheiros, comunicar procesos nunha rede ou facer saídas a un terminal, estaremos utilizando diferentes tipos de fluxos. No caso de java.nio, aparece o concepto de canal que terá as mesmas utilidades pero que levará asociado un buffer. Brevemente, este é o listado dos tipos de Stream que poderemos utilizar:

  • InputStream, OutputStream

Clases abstractas que definen as funcionalidades básicas para ler ou escribir unha secuencia de bytes sen estrutura. O resto de fluxos de bytes constrúense a partires delas.

  • Reader, Writer

Clases abstractas que definen as funcionalidades básicas para ler ou escribir unha secuencia de caracteres, con soporte para a codificación Unicode. O resto de fluxos de caracteres constrúense a partires delas.

  • InputStreamReader, OutputStreamWriter

Clases que fan de ponte entre fluxos de bytes e de caracteres facendo as conversións precisas segundo a codificación utilizada. Por exemplo, coa codificación Unicode, un carácter non se corresponde cun byte.

  • DataInputStream, DataOutputStream

Clases especializadas en permitir ler e escribir tipos de datos multibyte, como os tipos numéricos primitivos ou os obxectos String.

  • ObjectInputStream, ObjectOutputStream

Clases especializadas en permitir serializar obxectos e reconstruílos.

  • BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter

Clases especializadas en mellorar a eficiencia das operacións de lectura e escritura, tanto de bytes como de caracteres.

  • PrintStream, PrintWriter

Clases para simplificar a lectura e escritura de texto.

  • PipedInputStream, PipedOutputStream, PipedReader, PipedWriter

Clases que se usan por parellas para mover datos dentro dunha aplicación. Os datos escritos nun PipedOutputStream ou PipedWriter lense usando o correspondente PipedInputStream ou PipedReader.

  • FileInputStream, FileOutputStream, FileReader, FileWriter

Implementacións de InputStream, OutputStream, Reader e Writer que len e escriben usando ficheiros do sistema de ficheiros local.