Hola:
Este bucle
Código Java:
Ver originalwhile(dis.read() != -1){
dat = dis.read();
list_num.add(dat);
}
está tirando datos. Cada vez que haces un read() se lee un dato del fichero, haces un read en la condicion del while para ver que no es -1 y ese dato se descarta, porque luego hacer otro read() dentro del bucle.
Se bueno.