Есть такая практика, что тот, кто открыл файл, тот его и закрывает.
Если вы открыли коннект, вы его и закрыли.
И т.д.
К примеру, есть функция, которая принимает коннект и выполняет от него запрос. Если коннект закрыт, то она открывает и выполняет запрос. По правилам хорошего тона, она его и закрывает потом.
Если коннект уже был открыт, то она просто выполняет запрос. Коннект не закрывает.
Так же и с файлами. Кто открыл файл на чтение, тот и закрывает.