Cómo leer una sola línea de un archivo en Java

¿Cómo puedo leer una sola línea de un archivo de texto en Java? y cuál es el criterio para saber que línea está completa.

en segundo lugar

¿Leí el archivo y luego para la función Leer línea y convertirlo en una cadena omitirá una gran cantidad de datos? ¿Cuál debería ser el problema? Aquí está mi código

String data = new String();
    while(infile.readLine() != null) {
    data = infile.readLine();
    System.out.println(data);
}

preguntado el 02 de diciembre de 13 a las 08:12

3 Respuestas

Cambie su código de la siguiente manera

  while((data = infile.readLine()) != null) {  // read and store only line    
  System.out.println(data);
  }

En tu código actual

   while(infile.readLine() != null) { // here you are reading one and only line
   data = infile.readLine(); // there is no more line to read
    System.out.println(data);
   }

Respondido el 02 de diciembre de 13 a las 08:12

Ahora leerá todos los datos, pero da una excepción, ¿cómo podría deshacerse de ellos? java.lang.NullPointerException en asignación.principal(asignación.java:13) - danyal malik

@DaNyAlmAlIk, ¿cómo se ve tu código ahora? prueba con debug tu codigo. - Ruchira Gayan Ranaweera

Estás leyendo una línea extra porque la primera readLine() como el while condition lee una línea pero se usa en absoluto. El segundo readLine() dentro de while bucle lea la segunda línea que está asignando a data e impresión.

Por lo tanto, debe asignar la línea de lectura en el while condición para data e imprímelo, ya que esa es la primera línea.

while((data = infile.readLine()) != null) { // reads the first line
    // data = infile.readLine(); // Not needed, as it reads the second line
    System.out.println(data); // print the first line
}

Además, dado que solo necesita leer la primera línea, no necesita el while en absoluto. Un simple if haría.

if((data = infile.readLine()) != null) { // reads the first line
    System.out.println(data); // print the first line
}

Con la BufferedReader y el código que publicaste en los comentarios, tu principal ahora debería verse así.

public static void main(String[] args) {
    try {
        FileInputStream fstream = new FileInputStream(args[0]);
        BufferedReader infile = new BufferedReader(new InputStreamReader(
                fstream));
        String data = new String();
        while ((data = infile.readLine()) != null) { // use if for reading just 1 line
            System.out.println(data);
        }
    } catch (IOException e) {
        // Error
    }
}

Respondido el 02 de diciembre de 13 a las 08:12

los datos en el archivo son 13 15 2 3 0 6 0 1 2 0 11 12 9 12 9 10 9 11 3 5 8 7 5 4 0 5 6 4 6 9 7 6 pero la salida en la consola es 13 13 0 5 4 3 0 1 9 12 6 4 5 4 0 2 11 12 9 10 0 6 7 8 9 11 5 3 ???? - danyal malik

read line() debe convertirse en una cadena, ya que aún no está en una cadena. o da un error de conversión de tipo - danyal malik

¿Qué lector está utilizando para leer el archivo? Te sugiero que uses un BufferedReader. - Rahul

te tengo y solo uso esa línea de lectura () una vez, pero aún omite muchos valores y también repite algunos. - danyal malik

he publicado la pregunta de nuevo en detalle con la salida. por favor échale un vistazo stackoverflow.com/questions/20324036/… - danyal malik

Lo primero : readLine() devuelve el valor de cadena solo para que no se convierta en cadena.

Segunda cosa: en su ciclo while, lee la primera línea y verifica si el contenido de la primera línea es nulo o no. Pero cuando data = infile.readLine(); se ejecuta, buscará la segunda línea del archivo y la imprimirá en la Consola.

Cambie su bucle while a esto:

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

Si utiliza toString() método, arrojará NPE cuando intente usar toString método con null contenido leído de infile.

Respondido el 02 de diciembre de 13 a las 08:12

Ahora leerá todos los datos, pero da una excepción, ¿cómo podría deshacerse de ellos? java.lang.NullPointerException en asignación.principal(asignación.java:13) - danyal malik

@DaNyAlmAlIk ¿Puede actualizar su código en la pregunta anterior para que pueda entender el problema claramente? Vimal Bera

¿Y cuál es la línea número 14 en el archivo de asignación.java? Vimal Bera

importar java.util.Iterator; asignación de clase pública { public static void main(String[] args) { In infile = new In(args[0]); // Digraph digraph = new Digraph(infile); // System.out.println(digraph.toString()); Cadena de datos = nueva cadena (); intente { while((data = infile.readLine().toString()) != null){ System.out.println(data); } } catch (NullPointerException e) { } } } este es el código completo - danyal malik

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.