Usando BufferedReader para leer el archivo de texto

Tengo problemas con el uso del BufferedReader

Quiero imprimir las 6 líneas de un archivo de texto:

public class Reader { public static void main(String[]args) throws IOException{ FileReader in = new FileReader("C:/test.txt"); BufferedReader br = new BufferedReader(in); while (br.readLine() != null) { System.out.println(br.readLine()); } in.close(); } 

Ahora, de lo que puedo deducir cada vez que llamo al método readLine () avanza automáticamente a la siguiente línea.

Así que no puedo usar la condición br.readLine ()! = Null ya que ya avanzará una línea y obtendré el resultado:

 Line 2 Line 4 Line 6 

¿Qué condición utilizo para verificar si todavía hay una nueva línea en el campo de texto?

¡Gracias por adelantado!

Este es el problema:

 while (br.readLine() != null) { System.out.println(br.readLine()); } 

Tiene dos llamadas a readLine : la primera solo verifica que haya una línea (pero la lee y la descarta) y la segunda lee la línea siguiente . Usted quiere:

 String line; while ((line = br.readLine()) != null) { System.out.println(line); } 

Ahora solo estamos llamando a readLine() una vez por iteración de bucle, y usando la línea que hemos leído tanto para “¿hemos terminado?” e partes de “imprimir la línea”.

Lees la line través del ciclo ya través del ciclo lees la siguiente línea, así que solo léelo en el ciclo while

  String s; while ((s=br.readLine()) != null) { System.out.println(s); } 

Puede asignar el resultado de br.readLine() a una variable y usarlo tanto para el procesamiento como para la verificación, de esta forma:

 String line = br.readLine(); while (line != null) { // You might also want to check for empty? System.out.println(line); line = br.readLine(); } 
 private void readFile() throws Exception { AsynchronousFileChannel input=AsynchronousFileChannel.open(Paths.get("E:/dicom_server_storage/abc.txt"),StandardOpenOption.READ); ByteBuffer buffer=ByteBuffer.allocate(1024); input.read(buffer,0,null,new CompletionHandler(){ @Override public void completed( Integer result, Void attachment){ System.out.println("Done reading the file."); } @Override public void failed( Throwable exc, Void attachment){ System.err.println("An error occured:" + exc.getMessage()); } } ); System.out.println("This thread keeps on running"); Thread.sleep(100); } 

Quizás te refieres a esto:

 public class Reader { public static void main(String[]args) throws IOException{ FileReader in = new FileReader("C:/test.txt"); BufferedReader br = new BufferedReader(in); String line = br.readLine(); while (line!=null) { System.out.println(line); line = br.readLine(); } in.close(); } 

Tratar:

 String text= br.readLine(); while (text != null) { System.out.println(text); text=br.readLine(); } in.close(); 

o

 public String getFileStream(final String inputFile) { String result = ""; Scanner s = null; try { s = new Scanner(new BufferedReader(new FileReader(inputFile))); while (s.hasNext()) { result = result + s.nextLine(); } } catch (final IOException ex) { ex.printStackTrace(); } finally { if (s != null) { s.close(); } } return result; } 

Esto tiene la primera línea también.

puedes almacenarlo en una matriz y luego usar la línea que quieras … este es el fragmento de código que he usado para leer la línea del archivo y almacenarla en una matriz de cadenas, espero que te sea útil 🙂

 public class user { public static void main(String x[]) throws IOException{ BufferedReader b=new BufferedReader(new FileReader("")); String[] user=new String[30]; String line=""; while ((line = b.readLine()) != null) { user[i]=line; System.out.println(user[1]); i++; } } }