Por lógica :
 
//found se inicializa como false
...
boolean found = false; 
...
//found toma su valor "definitivo" en el método search(ID) de el objeto
 // leerObj de la clase leer , postea esa clase a ver si entre todos ... 
 found = leerObj.search(ID);  
Y como vemos que found nunca toma el valor true , supongo que ese método no hace lo que tiene que hacer ... Sin datos ... Sin datos ... No puedo proseguir 
 
Investiga por hay