SECUENCIAS O FLUJO DE DATOS (Streams)
¿Para que se utilizan las secuencias o Streams?
Lo utilizaremos para realizar
transferencias de datos, leer o escribir archivos externos o internos. Con los
conocimientos adquiridos hasta el momento tan solo podíamos guardar nuestros
datos en un array (matriz) o en una variable, pero cuando nuestro programa
finaliza esta información desaparece.
Lo que deseamos hacer ahora es
almacenar o leer información en archivos que no sean temporales. Si lo que
deseamos es almacenar la información tendremos que acceder a un dispositivo físico
(disco duro, memoria externa, USB, CD, dispositivo móvil, tarjeta SD…) Para realizar
esto vamos a necesitar las frecuencias o flujo de datos.
FORMAS DE ABORDAR LOS STREAMS
Existen dos tipos de flujos de datos Flujo de bytes y Flujo
de caracteres. Todas las clases que hacen referencia al flujo de datos
pertenecen al paquete Java.IO.
Flujo de bytes:
Utilizaremos bytes para almacenar
los datos. Si deseamos crear un comprimido y mandarlo para luego decodificarlo.
Utilizaremos las clases abstractas,
por lo que tendremos que sobrees cribir sus métodos.
·
InputStream (para leer)
·
OutputStream(trasmitir)
Flujo de caracteres:
Utilizaremos caracteres o letras para guardar los datos. Lo
utilizaremos cunado el archivo puede ser leído por el usuario.
Utilizaremos las clases abstractas,
por lo que tendremos que sobreescribir sus métodos.
·
Reader (leer)
·
Writer (escribir).
Leer archivos de texto
En primer lugar decir que para
leer un archivo tenemos que seguir siempre tres paso básicos:
1.
Abrir el archivo
2.
Leerlo
3.
Cerrarlo
Para leer archivos de texto
necesitaremos utilizar instancias de la clase FileReader y como desciende de
la clase abstracta Reader que a su vez desciende de IOException nos obligará a
realizar un try/catch
class leeme{
public void leenos() {
try {
FileReader entrada = new
FileReader("C:\\Users\\x\\Desktop\\z/Prueba
lectura.txt");
} catch (FileNotFoundException e) {
System.out.println("Mira si el archivo se encuentra en su sitio, no veo nada");
e.printStackTrace();
}
}
}
Una vez localizado el fichero
utilizaremos el método read() para leer dentro de él. Este método también nos
exige un try/catch. El método read() nos regresa número enteros que son los
caracteres unicodes de cada unas de las letras y cuando llega al final del
fichero nos regresa -1.
Por lo que si le decimos que
hasta que read()= -1 siga recorriendo iremos desde principio al fin del texto.
Esto hará que se imprima en consola los caracteres unicodes que pertenecena
cada una de las letras.
class leeme{
public void leenos() {
FileReader texto;
try {//abrimos comunicación
(Stream)
texto = new FileReader("C:\\Users\\dagip\\Desktop\\ddddddddddd/Prueba
lectura.txt");
while (texto.read()!= -1) {//leemos
System.out.println (texto.read());
}
} catch (IOException e) {
System.out.println("Mira si el archivo se
encuentra en su sitio porque yo no lo veo");
e.printStackTrace();
}
}
Ahora lo que aremos es
transformar esos numero que corresponden al carácter Unicode a letras (char).
Para ello realizaremos un casting a esos caracteres
class leeme{
public void leenos() {
FileReader texto;
try {//abrimos comunicación
(Stream)
texto = new FileReader("C:\\Users\\dagip\\Desktop\\ddddddddddd/Prueba
lectura.txt");
int c = texto.read();
while (c!= -1) {//leemos archivo
char letraActual = (char)c;
System.out.print (letraActual);
c=texto.read();
}
} catch (IOException e) {
System.out.println("Mira si el archivo se
encuentra en su sitio porque yo no lo veo");
e.printStackTrace();
}
}
}
Ahora cerraremos el archivo .
public void leenos() {
FileReader texto;
try {//abrimos comunicación
(Stream)
texto = new FileReader("C:\\Users\\t\\Desktop\\v/Prueba
lectura.txt");
int c = texto.read();
while (c!= -1) {//leemos archivo
char letraActual = (char)c;
System.out.print (letraActual);
c=texto.read();
}//cerramos archivo
texto.close();
} catch (IOException e) {
System.out.println("Mira si el archivo se
encuentra en su sitio porque yo no lo veo");
e.printStackTrace();
}
}
}
Así sería nuestro código completo:
import java.io.*;
public class Lectura1 {
public static void main(String[] args) {
leeme lee = new leeme();
lee.leenos();
}
}
class leeme{
public void leenos() {
FileReader texto;
try {//abrimos comunicación
(Stream)
texto = new FileReader("C:\\Users\\v\\Desktop\\v/Prueba
lectura.txt");
int c = texto.read();
while (c!= -1) {//leemos
char letraActual = (char)c;
System.out.print (letraActual);
c=texto.read();
}//cerramos archivo
texto.close();
} catch (IOException e) {
System.out.println("Mira si el archivo se
encuentra en su sitio porque yo no lo veo");
e.printStackTrace();
}
}
}
No hay comentarios:
Publicar un comentario