Seguidores

MIS WEBS



martes, 17 de abril de 2018

Leer archivos de texto con java


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

Buscar este blog

Sandisk y Western Digital