Cómo leer una sola línea de un archivo en Java
Frecuentes
Visto 6,585 veces
1
¿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);
}
3 Respuestas
2
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
1
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
0
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 java or haz tu propia pregunta.
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