Обычно это зависит от того, с каким файлом вы взаимодействуете. Конечно, двоичные файлы должны быть открыты во время чтения. Вы можете разобрать текст в строку и сразу же закрыть файл, если файл представляет собой простой текст.
Я бы хотел сказать, что вы должны держать указатель файла открытым в течение всего времени жизни программы, но в случае сбоя он никогда не закроется. Затем я предложу держать его открытым во время относительно безопасных операций и операций с низким уровнем риска, но открывать / закрывать его постоянно, когда вы неравнодушны к стабильности приложения. Никто не хочет, чтобы файловые указатели оставались открытыми. :)