Flujos de entrada

En primera instancia mostramos el código y luego explicamos los procesos, este código esta dividido en cuatro secciones, las cuales se detallan en el apartado inferior.

 

package cursoJava;
import java.io.*;
public class DemoFlujo1 {
    // Entrada utilizando espacio de almacenamiento intermedio
    public static void main(String args[]) throws IOException{
        BufferedReader entrada =
        new BufferedReader (
        new FileReader (“cursoJava/Archivo.java”));
        String S,S2 = new String();
        while ((S = entrada.readLine())!= null){
       S2 += S + “n”;
    }
        entrada.close();
    //entrada estandar
        BufferedReader entradaEstandar =
        new BufferedReader(
        new InputStreamReader(System.in));
        System.out.print(“Introduce una linea: “);
        System.out.println(“Escribiste: –> “+ entradaEstandar.readLine());
    //entrada desde memoria
        StringReader entrada2 = new StringReader(S2);
        int c;
        while ((c = entrada2.read()) != -1)
            System.out.print((char)c);
    //entrada con formato de memoria
    try {
        DataInputStream entrada3 =
            new DataInputStream (
                new ByteArrayInputStream(S2.getBytes()));
    while (true)
        System.out.print((char)entrada3.readByte());
      }catch(EOFException e){
        System.out.print(“Fin del flujo”);
    }
}
}

Entrada utilizando espacio de almacenamiento intermedio:

Para abrir un archivo para entrada de caracteres se usa un FileInputReader junto con un objeto file o String como nombre de archivo. Para lograr mayor velocidad, se deseara que el archivo tenga un espacio de almacenamiento intermedio de forma que se de la referencia resultante al constructor para un bufferedReader también proporciona el método readline(), este es el objeto final y la interfaz de la que se lee.

El String S2 se usa para acumular todo el contenido del archivo y finalmente se invoca a close() para cerrar el archivo, técnicamente, se llamara a close() cuando se ejecute finalize().

Entrada estándar:

También se muestra en el código como se puede envolver a SYstem.ini para leer la entrada por consola. System.in es un DataInputStream y BufferedReader necesita un parámetro Reader, por lo que se hace uso de InputStreamReader para llevar a cabo la traducción.

Entrada desde memoria:

Se toma el String S2 que ahora contiene todos los contenidos del archivo y lo usa para crear un StringReader. Después se usa a read() para leer cada carácter de uno en uno y enviarlo a la consola. read() devuelve el siguiente byte como un int por lo que hay que convertirlo en char para que se imprima correctamente.

Entrada con formato desde memoria:

Para leer los datos “con formato” se usa un DataInputStream, que es una clase de E/S orientada a byte( en ves de orientada a char ). Por consiguiente se deben usar todas las clases InputStream en ves de clases Reader. Por supuesto, se puede leer cualquier cosa (ej archivo) como si de bytes se tratara, usando clases InputStream, pero aquí se usa un String.

Para convertir un String en un array de bytes apropiado para un ByteArrayInputStream, String tiene un método getBytes() que se encarga de esto. En este momento se tiene un InputStream apropiado para manejar DataInputStream.

A continuacion mostramos parte de la salida de nuestra clase.
Introduce una linea: holaEscribiste: –> hola
//Demostramos el uso de la clase File
//parte I
package cursoJava;
import java.io.*;

public class Archivo {
private final static String uso =
“Ayuda: ingrese el nombre del fichero seguido del operador correspondiente.” +
“\n -i Obtiene informacion del fichero” +
“\n -c Crea un directorio” +
“\n EJEMPLO MODO DE EMPLEO: Archivo -i miarchivo.txt”;

private static void uso(){
System.out.println(uso);
System.exit(1);
}
private static void datosArchivo(File f) {

… …… (la salida continua pero cortamos aca) …….

 

Anuncios

About exequielc

Hola! Estás en el blog de Exequiel Catalani. Como es un blog, se trata de una extensión más o menos lineal de las cosas que hago y pasan por mi cabeza: ciberculturas, videos de la red, nuevos medios y tecnologia, y Programacion etc...

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: