por cierto le volví a hechar un ojo a tu código pero ya entendí.
Tu estás haciendo un request por un NullPointerException (odio esa
maldita excepcion) mira el problema es tu constructor:
reg=new RandomAccessFile("Agencia.bin",null);
el segundo atributo según la documentación (vease:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/RandomAccessFile.html#mode
) requiere un String que indica el modo en el que abres el archivo:
"r" si quieres leer
"rw" si quieres leer y escribir
y los otros modos no los entendí.
Ahora bueno, una pequeña explicación: Los archivos de acceso Aleatoreo
(RandomFiles) son archivos que se supone están hechos para obtener un
registros a partir de una llave de una mánera rápida (sin tener que
leer los registros previos para encontrar dicho registro)
Si tu lo que quieres es leer un sólo registro te recomendaría
ampliamente uses el ObjectOutputStream para escribir o el
ObjectInputStream para leer.
Otra recomendación:
Leete las convenciones de codificacion:
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
y sobre todo esta sección que habla de las convenciones para poner
nombres:
http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367
La ventaja de seguir esas convenciones es que vas a tener un código
más legible y elegante, por lo que sería más fácil darle mantenimiento
a tu código y también a la hora que pidas ayuda a otros programadores,
sería más fácil que la persona que te ayude entienda tu código fuente.
Si sientes que los nombres quedan muy largos, también te recomiendo
uses una IDE (como NetBeans o Eclipse) :P