| 
	
		|  Autor | Tema: Encontrar un numero dentro de un archivo  (Leído 4,810 veces) |  
	| 
			| 
					
						| Sebasmc2 
								
								 Desconectado 
								Mensajes: 5
								
								
								
								
								
								   | 
 
BuenasSoy un nob con Java y tengo una cuestion con un programilla que no se como resolver.
 Mirad, tengo un archivo TXT con números y palabras, separados por un salto de linea cada uno, que lo tengo que leer y cuando encuentre un numero, por ejemplo el 5, tiene que moverse una linea mas, donde encontrara otro numero que le dirá cuantas lineas mas tiene que leer, estas lineas que tiene que leer son palabras que las tendrá que guardar en un array.
 Sé como hacer que me lea el archivo entero pero no hay manera de que al llegar al numero que le digo por lo menos se pare. No se si servira de ayuda pero este es mi codigo:
 try{
 FileReader f = new FileReader("listaPalabras.txt");
 BufferedReader fichero = new BufferedReader(f);
 
 //Leer la primera línea, guardando en un String
 String texto = fichero.readLine();
 //Repetir mientras no se llegue al final del fichero
 while(texto != null)
 {
 //Hacer lo que sea con la línea leída
 System.out.println(texto);
 //Leer la siguiente línea
 texto = fichero.readLine();
 }
 
 He intentado en el while poner (texto=="5"), pero no me lee nada, si pongo (texto!="5") me lo lee todo y además se queda en un bucle infinito
 
 A ver si alguien me puede ayudar que estoy bastante desesperado..
 
 Gracias!!
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  | 
			| 
					
						| Sebasmc2 
								
								 Desconectado 
								Mensajes: 5
								
								
								
								
								
								   | 
 
Muchas gracias por responder. Lo he probado - while("5".equals(texto)) - y me hace exactamente lo mismo    |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| gordo23 
								
								 Desconectado 
								Mensajes: 38
								
								
								
								
								
								   | 
 
Si lo que tenés que leer es un número yo lo haría así:
 int numero = Integer.valueOf(fichero.readLine());
 
 Y con eso la comparación la podés hacer tranquilamente con numero == 5
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Sebasmc2 
								
								 Desconectado 
								Mensajes: 5
								
								
								
								
								
								   | 
 
Hace exactamente lo mismo......No se a ver si va a ser problema del archivo.
 Si a nadie se le ocurre otra cosa importare el archivo a un array y trabajaré sobre el array a ver si así me va mejor
 
 Saludos y gracias
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| gordo23 
								
								 Desconectado 
								Mensajes: 38
								
								
								
								
								
								   | 
 
No logro entender lo que querés lograr. ¿Qué tenés en el archivo de texto y que exactamente tiene que hacer el programa? |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| ivancea96 
								       
								
								 Desconectado 
								Mensajes: 3.412
								
								 
								ASMático
								
								
								
								
								
								     | 
 
Vamos a ver. Si no me equivoco, quieres leer hasta encontrar un número, ¿no?
 Si pones while(texto=="5") estás diciendo que lea SOLO si el texto es "5". Tendrías que tener un "5" en la primera linea, y luego un salto de línea.
 
 Quizás lo que debas hacer, es, después de leer una linea del archivo, comprobar si en esta se encuentra el número en cuestión.
 
 Si no es eso lo que buscas, explícamelo mejor jeje
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Chuidiang | 
 
No estaría de más que mostraras el contenido del archivo y el código donde haces esa comparación. En el que muestras sólo lees líneas y no haces nada con ellas.
 Se bueno.
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Sebasmc2 
								
								 Desconectado 
								Mensajes: 5
								
								
								
								
								
								   | 
 
Claro no hacia nada con la linea leida... ahora he hecho unos cambios y me va a medias.A ver si me explico mejor...el programa me pide un numero, este numero es el que tendra que buscar dentro del archivo, puede ser 4, 5 o 6. Cuando haya encontrado este numero tiene que leer la linea siguiente que es la que indicara el numero de lineas que tiene que leer a continuacion.
 En estas lineas encontramos las palabras del tamaño que nos indica el numero que nos ha pedido. El programa lo que tendra que hacer con estas lineas leidas es pasar las palabras a un array, pero esto ya es otro tema. Mi problema principal es que me encuentre el numero que le digo y me lea la linea siguiente.
 
 Con los cambios que he hecho, si le pongo un 4 me lo encuentra y me lee la siguiente linea, la imprime por eso entiendo que funciona, pero si le pongo 6 o 5 no me hace nada, se termina el programa.
 
 Este es el codigo entero:
 
 *
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 package ioc.m3.biblioteca;
 
 import java.io.*;
 
 import java.util.Scanner;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 
 /**
 *
 * @author Sebas
 */
 public class PruebasDiccionario {
 
 
 public static void main(String[] args) throws IOException {
 
 //Preguntamos al usuario el numero que queremos encontrar en el archivo
 System.out.println("Introduce el tamaño de las palabras :");
 Scanner scanner = new Scanner(System.in);
 String tamaño = scanner.nextLine();
 
 try{
 File f = new File("listaPalabras.txt");
 RandomAccessFile fichero = new RandomAccessFile(f,"r");
 
 //Leer la primera línea, guardando en un String
 String texto = fichero.readLine();
 
 //Repetir mientras no se llegue al final del fichero
 while(texto!=null){
 
 //Comparamos la linea con el numero que le hemos indicado
 if (tamany.equals(fitxer.readLine())){
 
 System.out.println(fitxer.readLine());
 
 }
 //Leer la siguiente línea
 texto = fitxer.readLine();
 }
 
 // Close the file.
 fitxer.close();
 } catch (FileNotFoundException ex) {
 Logger.getLogger(Diccionari.class.getName()).log(Level.SEVERE, null, ex);
 }
 }
 
 
 }
 
 **************
 Y el contenido del archivo es esto. el primer numero indica el tamaño de las palabras y el segundo el numero de palabras que hay (he borrado muchas por que si no la lista es muy larga)
 
 5
 581
 ABANS
 ABAST
 ABRIC
 ABRIL
 ABSIS
 ACERB
 ACORD
 ACTIU
 ACTOR
 ACUIT
 ACULL
 ALTRI
 AMANT
 AMARG
 ...
 4
 281
 abat
 acer
 acne
 acre
 asma
 aspa
 assa
 asta
 atac
 atea
 ateu
 atol
 atri
 atur
 ...
 6
 184
 abadia
 abatre
 abatut
 abduir
 abecar
 abella
 abisme
 abocar
 abocat
 aboiar
 abolir
 abonar
 abonat
 absent
 ...
 
 
 |  
						| 
								|  |  
								| « Última modificación:  2 Mayo 2014, 18:28 pm por Sebasmc2 » |  En línea | 
 
 |  |  |  | 
			| 
					
						| gordo23 
								
								 Desconectado 
								Mensajes: 38
								
								
								
								
								
								   | 
 
No he usado nunca la clase RandomAcessFile, pero, ¿esto no serviría?: while (texto = fichero.readLine() != null) { //Lee una linea, la asigna a la variable texto y chequea que no sea null    if(texto.equals(tamanio)) {        int numeroPalabras = Integer .valueOf( fichero.readLine()); //La siguiente linea al tamanio de la palabra que queriamos encontrar lee un entero de la cantidad de palabras que vamos a leer        for(int i = 0; i < numeroPalabras; i++) {            String palabra =  fichero.readLine();            //Aca lo que harías con cada palabra        }    }} 
 PD: No probé el código, así que no se si tiene errores pero es basicamente lo que haría yo. Podrías ajustarlo y probar si te funciona. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Encontrar una palabra dentro de un texto Programación Visual Basic
 | Hendrix | 4 | 2,152 |  6 Marzo 2006, 16:01 pm por Hendrix
 |  
						|   |   | Encontrar una cadena de texto dentro de otra PHP
 | deya | 2 | 6,649 |  27 Junio 2007, 23:52 pm por deya
 |  
						|   |   | Encontrar palabra dentro de un texto... Programación Visual Basic
 | Edu | 5 | 3,338 |  11 Septiembre 2010, 17:57 pm por Edu
 |  
						|   |   | Encontrar contraseña oculta dentro de un archivo Ingeniería Inversa
 | Jnl | 0 | 2,360 |  28 Julio 2012, 06:04 am por Jnl
 |  
						|   |   | Crear archivo Exe con un archivo dentro de los Resources, sería posible? .NET (C#, VB.NET, ASP)
 | z3nth10n | 4 | 4,336 |  3 Julio 2013, 19:55 pm por z3nth10n
 |    |