Turns out we can't hold the file open if we want to get updates, so
moving fopen/fclose to be on-demand vs constructor/desctructor.