Давайте вынесем логику открытия/закрытия в отдельный класс? Тогда, быть может, удастся воспользоваться FileMap'ом из предыдущей работы.