Cita:
Iniciado por GreenEyed Lo que te dice dogduck es correcto. Si leerObj.search(ID) devuelve false es por algo que hace la funcion, y dentro es donde debe estar el problema. Con lo que has puesto lo unico que podemos decir es que la funcion te devuelve siempre false, pero no podemos saber por que.
Yo tambien pensaria eso, pero si fuera asi, mi clase de Pruebas tampoco funcionaria, y si lo hace todo bien.
De hecho, ahorita probe quitando mi archivo de "datos.txt" de mi aplicacion, y no me manda error ni nada y aun asi manda false.
Esta demasiado raro.....
hay alguna parte donde deba especificar que va a leer los datos de ahi?
De todas formas, aqui lesp ongo mi clase leer para que vean:
Código PHP:
import java.io.*;
import java.lang.*;
import java.util.*;
public class Leer
{
// ID, Nombre, Colegio
public static String[] strStudentData;
// Datos del archivo de texto
private static String[] strFileData;
private static int fileSize;
/*public static void main(String args[])
{
System.out.println("Lee Archivo");
// inicializa datos
fileSize = getFileSize("datos.txt");
strFileData = new String[fileSize];
strFileData = ReadFile("datos.txt");
strStudentData = new String[3];
// busca
search("118749");
for ( int i = 0; i < 3; i++ )
System.out.println( strStudentData[i] );
}*/
/***************************************************************
* C O N S T R U C T O R
* Inicializa todos los datos necesarios
*
***************************************************************/
public Leer()
{
fileSize = getFileSize("datos.txt");
strFileData = new String[fileSize];
strFileData = ReadFile("datos.txt");
strStudentData = new String[3];
}
/***************************************************************
* S E A R C H
* Metodo busca si el ID especificado se encuentra
* registrado en la escuela
***************************************************************/
public static boolean search( String ID)
{
String strTemp = "";
int cont = 0;
int pos = 0;
boolean found = false;
int tempfileSize = fileSize;
// empieza a leer todos los datos
while ( (cont < tempfileSize) )
{
// crea un string con un ID
strTemp = strFileData[cont].substring(0,6);
// checa si los ID son iguales
if (strTemp.compareTo(ID) == 0)
{
// fueron iguales e imprime los datos
// en esa posicion
pos = cont;
getData(pos);
found = true;
//if(found)
return true;
//break;
}
cont++;
}
return false;
// System.out.println("No se encontro el estudiante ");
}
/***************************************************************
* P R I N T S T U D E N T D A T A
* Metodo que obtiene el tamanio de lineas
* que contiene un archivo
***************************************************************/
public static void printStudentData()
{
System.out.println( "ID : " + strStudentData[0] );
System.out.println( "Nombre: " + strStudentData[1] );
System.out.println( "Colegio: " + strStudentData[2] );
}
/***************************************************************
* G E T D A T A
* Obtiene los datos del estudiante buscado y los guarda
*
***************************************************************/
private static void getData(int pos)
{
StringTokenizer st = new StringTokenizer(strFileData[pos], "|");
System.out.println("Los datos del estudiante son: ");
int i = 0;
while (st.hasMoreTokens())
{
strStudentData[i] = st.nextToken();
strStudentData[i] = strStudentData[i].trim();
//System.out.println(strStudentData[i]);
i++;
}
convertData(strStudentData[2]);
}
/***************************************************************
* C O N V E R T D A T A
* Convierte las siglas del colegio al nombre
*
***************************************************************/
private static void convertData( String college )
{
if ( college.compareTo("CCM") == 0 )
strStudentData[2] = "Colegio Cain Murray";
else if ( college.compareTo("CIB") == 0 )
strStudentData[2] = "Colegio Ignacio Bernal";
else if ( college.compareTo("CRL") == 0 )
strStudentData[2] = "Colegio Ray Lindley";
else if ( college.compareTo("CJG") == 0 )
strStudentData[2] = "Colegio Jose Gaos";
}
/***************************************************************
* G E T F I L E S I Z E
* Metodo que obtiene el tamanio de lineas
* que contiene un archivo
***************************************************************/
private static int getFileSize( String fileName )
{
int tempfileSize = 0;
try
{
BufferedReader in = new BufferedReader(new FileReader(fileName ));
while ( in.readLine() != null)
{
tempfileSize ++;
}
in.close();
}
catch (IOException e) {}
return tempfileSize ;
}
/***************************************************************
* R E A D F I L E
* Metodo que lee el archivo con el nombre especificado
* y regresa un arreglo con los datos que contiene en
* linea por linea
****************************************************************/
private static String[] ReadFile( String fileName )
{
// tamanio y datos del archivo
String[] str = new String[3360];
// lee el archivo y lo guarda en str
try
{
BufferedReader in = new BufferedReader(new FileReader(fileName));
int i = 0;
while ( (str[i]=in.readLine()) != null)
{
i++;
}
in.close();
}
catch (IOException e) {}
return str;
}
/***************************************************************
* P R I N T F I L E
* Imprime los datos Linea - por - Linea que contiene
* un archivo
****************************************************************/
private static void PrintFile( String[] strData, int tempfileSize )
{
for ( int i = 0; i < tempfileSize ; i++ )
System.out.println( strData[i]);
System.out.println( "data loaded: " + tempfileSize );
}
}
y aqui esta el formato de mi archivo de "datos.txt"
Código PHP:
112125 | Fernando Valenzuela C | CCM
122351 | Mariana Martinez Avila | CRL
105683 | Luis Garcia Montalvo | CRL
119518 | Stefanie Gaytan Ruiz | CIB
118720 | Melesio Uscanga Silva | CIB
121764 | Mario Alberto De Leon Espinoza | CJG
108424 | Karina Celia Gutierrez Badillo | CIB
118357 | Corinne Montes Camacho | CCM
120693 | Juan Pablo Elizondo Portilla | CCM
Sigo insistiendo, hay algun lugar especifico donde deba poner mi archivo de "datos.txt" o hacer algo especial con el HTML o el XML o algo asi?
saludos,