Seguidores

MIS WEBS



Mostrando entradas con la etiqueta Close(). Mostrar todas las entradas
Mostrando entradas con la etiqueta Close(). Mostrar todas las entradas

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();
             }     
       }     
}


Buscar este blog

Sandisk y Western Digital