La clase TextReader

Un objeto de esta clase es un lector que permite leer los datos almacenados en un archivo de texto, ya sea por líneas, palabras, enteros, reales o valores booleanos.

El lector mantiene un cursor que separa los datos leídos de los datos que falta por leer. El cursor apunta exactamente hacia el primer caracter que no ha sido leído.

En el archivo, los datos pueden estar separados por uno o más espacios, o bien estar delimitados por un delimitador (típicamente ":").

Ejemplo 1: Lectura de un archivo con palabras separadas por espacios

En el primer ejemplo se leerá un archivo con los datos separados por uno o más espacios. Supongamos el contenido del archivo "prosa.txt" es:

------ prosa.txt ---------
Hola   que tal,   como te ha
   ido en tu trabajo
Mi oficina es la numero
  123   3.14
--------------------------
En el siguiente programa, se indica en la forma de un comentario qué leerá del archivo cada instrucción:

    // Creamos un lector para archivos que usan
    // espacios para separar los datos
    TextReader lect= new TextReader("prosa.txt");
    String s1= lect.readString(); // s1 es "Hola   "
    String s2= lect.readString(); // s2 es "que "
    String s3= lect.readString(); // s3 es "tal,   "
    String s4= lect.readLine();   // s4 es "como te ha"
    String s5= lect.readString(); // s5 es "   ido "
    String s6= lect.readLine();   // s6 es "en tu trabajo"
    String s7= lect.readLine();   // s7 es "Mi oficina es la numero"
    int of= lect.readInt();       // of es 123
    double pi= lect.readDouble(); // pi es 3.14
    lect.close();
Cuando Ud. desea leer todas las líneas de un archivo, utilice el siguiente patrón para detectar el fin del archivo:

    while (true) {
      String ...= readLine();  // lee una línea
      if (lect.eofReached()) { // termina si se acabó el archivo
        break;
      }
      ...                      // procesa la línea
    }

Ejemplo 2: Lectura de datos separados por un delimitador

En el sengundo archivo los datos están separados por un único delimitador ":". Supongamos el contenido del archivo "datos.txt" es:

------ datos.txt ---------
Hola que tal:1:3.14:false
Hola:que:tal
Hola::tal
--------------------------
    // Creamos un lector para archivos que usan
    // un único delimitador ":" para separar los datos.
    TextReader lect= new TextReader("datos.txt");
    String s1= lect.readString();  // s1 es "Hola que tal"
    int n    = lect.readInt();     // n es 1
    double x = lect.readDouble();  // x es 3.14
    boolean b= lect.readBoolean(); // b es false
    lect.skip(); // cambia de línea
    String s2= lect.readString();  // s2 es "Hola"
    String s3= lect.readString();  // s3 es "que"
    String s4= lect.readString();  // s4 es "tal"
    lect.skip();
    String s5= lect.readString();  // s2 es "Hola"
    String s6= lect.readString();  // s3 es ""
    String s7= lect.readString();  // s4 es "tal"
    lect.skip();
    lect.close();
Para leer todas las líneas de un archivo utilice el siguiente patrón:

    while (!lect.eofReached()) { // termina si se acabó el archivo
      ...= read...(); // lee un campo
      ...= read...(); // lee otro campo
      ...             // el resto de los campos
      lect.skip();    // cambia de línea
      ...             // procesa la línea
    }
Para leer todos los campos de una línea utilice el siguiente patrón:

    while (lect.hasMoreFields()) { // termina si se acabó la línea
      String ...= readString();    // lee un campo
      ...                          // procesa el campo
    }
    lect.skip();                   // cambia de línea

Paquete

Para hacer uso de esta clase es necesario incluir al inicio del programa la siguiente línea:

    import tools.*;

Constructor

Métodos