Como han dicho otras personas, existen otras clases diseñadas específicamente para leer líneas de texto, como BufferedReader. Sin embargo, si usted está obligado a utilizar RandomAccessFile, se puede leer líneas de texto, pero hay que encontrar mediante programación en la que 1 línea termina y comienza otra línea ...
Un ejemplo sencillo puede ser ...
RandomAccessFile raf = new RandomAccessFile("c:\test.txt","r");
String line = "";
while (raf.available()){
byte b = raf.read();
if (b == '\n'){
// this is the end of the current line, so prepare to read the next line
System.out.println("Read line: " + line);
line = "";
}
else {
line += (char)b;
}
}
Esto proporciona el elemento básico para un lector que busca el final de cada línea.
Si tiene la intención de seguir el camino de usar RandomAccessFile, puede comenzar con este marco, pero debe tener en cuenta una serie de inconvenientes y errores tales como ... 1. Uso de Unix y Windows marcadores de línea diferentes: deberá buscar '\ n', '\ r' y una combinación de estos dos 2.Leer un solo byte a la vez es muy lento: debe leer un bloque de bytes en un búfer de matriz (por ejemplo, una matriz de bytes [2048]) y luego iterar a través de la matriz, rellenando la matriz desde RandomAccessFile cuando llegue al final de la matriz de almacenamiento intermedio 3. Si está tratando con caracteres Unicode, necesita leer y procesar 2 bytes a la vez, en lugar de bytes únicos.
RandomAccessFile es muy potente, pero si puede usar algo como BufferedReader, entonces probablemente sea mejor usarlo en su lugar, ya que se ocupa de todos estos problemas automáticamente.
Tengo un registro de longitud fija ... déjenme verificar si funciona ... – Nik
Consulte mi pregunta actualizada ... ¿Dónde estoy equivocado? – Nik
Cada línea contiene \ n caracteres. Entonces, de hecho, debe omitir lineCount * (lineSize + 1). – mishadoff