Diferencia entre revisiones de «Entrada/Saída»
Línea 7: | Línea 7: | ||
No caso de java.nio, aparece o concepto de canal que terá as mesmas utilidades pero que levará asociado un buffer. | 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: | Brevemente, este é o listado dos tipos de Stream que poderemos utilizar: | ||
− | *InputStream, OutputStream | + | *'''''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. | 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 | + | *'''''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. | 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 | + | *'''''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. | 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 | + | *'''''DataInputStream, DataOutputStream''''' |
Clases especializadas en permitir ler e escribir tipos de datos multibyte, como os tipos numéricos primitivos ou os obxectos String. | Clases especializadas en permitir ler e escribir tipos de datos multibyte, como os tipos numéricos primitivos ou os obxectos String. | ||
− | *ObjectInputStream, ObjectOutputStream | + | *'''''ObjectInputStream, ObjectOutputStream''''' |
Clases especializadas en permitir serializar obxectos e reconstruílos. | Clases especializadas en permitir serializar obxectos e reconstruílos. | ||
− | *BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter | + | *'''''BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter''''' |
Clases especializadas en mellorar a eficiencia das operacións de lectura e escritura, tanto de bytes como de caracteres. | Clases especializadas en mellorar a eficiencia das operacións de lectura e escritura, tanto de bytes como de caracteres. | ||
− | *PrintStream, PrintWriter | + | *'''''PrintStream, PrintWriter''''' |
Clases para simplificar a lectura e escritura de texto. | Clases para simplificar a lectura e escritura de texto. | ||
− | + | *'''''PipedInputStream, PipedOutputStream, PipedReader, PipedWriter''''' | |
− | 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. | 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''''' | |
− | FileInputStream, FileOutputStream, FileReader, FileWriter | ||
Implementacións de InputStream, OutputStream, Reader e Writer que len e escriben usando ficheiros do sistema de ficheiros local. | Implementacións de InputStream, OutputStream, Reader e Writer que len e escriben usando ficheiros do sistema de ficheiros local. |
Revisión actual del 11:16 10 feb 2017
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.