Java - problema al leer documentos.txt

 
Vista:
sin imagen de perfil

problema al leer documentos.txt

Publicado por Alvaro (11 intervenciones) el 12/02/2016 22:42:06
Hola buenas a ver si alguien consigue ver que he programado mal, por que quiero que el programa guarde en un String un documento de txt con varias lineas (objetivo final tienes unas 50.000 lineas) y siempre se salta alguna y no lo entiendo. Si tenéis un método mejor.. o algo no se. Creo que siempre lee la mitad de las lineas. si le pongo 50 lee 25.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private static String cadena;
	private static String pedido = "$";
 
	private static int contador = 0;
FileReader f;
		try {
 
			f = new FileReader("c:/Users/Alvaro/Desktop/recepcion.txt");
 
			BufferedReader b = new BufferedReader(f);
 
			System.out.println("Pensando..."); //tarda mucho en cargar las 50.000 lineas
 
			while ((cadena = b.readLine()) != null) {
				contador++;
				pedido += b.readLine();
				pedido += "\n";
 
 
			}
			System.out.println(contador + " : " + pedido);
			// System.out.println(pedido.length());
			b.close();
 
		} catch (Exception e) {
 
			e.printStackTrace();
		}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

problema al leer documentos.txt

Publicado por Alvaro (11 intervenciones) el 13/02/2016 00:38:44
He descubierto que lee las lineas pares... pero me gustaría leer todas, que clase tendría que usar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jordi

problema al leer documentos.txt

Publicado por Jordi (38 intervenciones) el 13/02/2016 08:43:04
Hola Álvaro,

Sólo te está leyendo las líneas pares porque cada vez que haces un b.readLine() te pasa a la línea siguiente. Como estás ejecutando ese readLine() dentro del while al hacer la comprobación a cada iteración, se te salta todo el rato una línea.

Tienes que concatenar a la variable pedido el valor asignado a "cadena" dentro de la cláusula while en vez de leer nuevamente el siguiente.

1
2
3
4
5
while ((cadena = b.readLine()) != null) {
     contador++;
     pedido += cadena;
     pedido += "\n";
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

problema al leer documentos.txt

Publicado por Alvaro (11 intervenciones) el 13/02/2016 12:28:21
Es cierto, no había caído en eso muchas gracias Jordi por la ayuda me has ayudado bastante con este problema. Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar