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 ":").
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
--------------------------
Cuando Ud. desea leer todas las líneas de un archivo, utilice el siguiente
patrón para detectar el fin del archivo:
// 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();
while (true) {
String ...= readLine(); // lee una línea
if (lect.eofReached()) { // termina si se acabó el archivo
break;
}
... // procesa la línea
}
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
--------------------------
Para leer todas las líneas de un archivo utilice el siguiente patrón:
// 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 todos los campos de una línea 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
}
while (lect.hasMoreFields()) { // termina si se acabó la línea
String ...= readString(); // lee un campo
... // procesa el campo
}
lect.skip(); // cambia de línea
Para hacer uso de esta clase es necesario incluir al inicio del programa la siguiente línea:
import tools.*;
Construye un lector para el archivo de nombre nombreArchivo. Las palabras dentro del archivo están separadas por uno o más espacios. El cursor queda al inicio del archivo.
Construye un lector para el archivo de nombre nombreArchivo. El archivo contiene campos de datos separados por el caracter único especificado en el parámetro sep. El cursor queda al inicio del archivo.
Avanza el cursor hasta el inicio de una nueva palabra o una nueva línea. Entrega el string ubicado desde la posición original del cursor hasta justo antes de su posición final.
Avanza el cursor hasta encontrar el inicio de una nueva línea. Entrega el string ubicado desde la posición original del cursor hasta justo antes de su posición final.
Lee una palabra, que debe corresponder a un número entero y entrega su valor numérico como entero.
Lee una palabra, que debe corresponder a un número real y entrega su valor numérico como real.
Si la última lectura (con readString, readLine, readInt o readDouble) se hizo más allá del final del archivo, este método retorna verdadero. Si no retorna falso, incluso cuando se acaba de leer el último elemento del archivo.
Sólo está permitido leer una vez pasado el final del archivo. Esto significa que después de cada lectura, Ud. debe consultar si se alcanzó el final del archivo.
Este método se invoca para indicar que no se continuará leyendo información con este lector. Después de invocarlo, es un error intentar seguir leyendo información con este lector.
Cuando se ha leído parcialmente una línea, este método descarta el contenido que aún no ha sido leído y posiciona el cursor justo al comienzo de la próxima línea.
Este método entrega verdadero si ya se leyo el último campo contenido en la línea. Falso en caso contrario. Este método sólo puede ser invocado con lectores que separan las línea por campos de datos.