В случае IOException'а в процессе чтения вы не закроете файловый дескриптор. Надо аккуратнее.