Уместно ли не закрывать файл сразу после прочтения данных?

Рейтинг: 0Ответов: 2Опубликовано: 18.11.2014

Я открываю файл в С++ (F.open(put);). Далее я читаю оттуда данные, и после этого я уже не использую файл, но я хочу, чтобы до завершения работы программы этот файл никто не смог бы редактировать, кроме моей программы.
Можно ли в этом случае просто не закрывать файл до окончания работы программы, или в этом есть какие-то свои подводные камни?

Ответы

▲ 4Принят

Взаимодействие с объектами операционной системы зависят от операционной системы. Файлы - объекты операционной системы. Все упирается в средства, которыми Вы взаимодействуете с оперционной системой, позволяют ли они тонко настраивать, или нет. Любые библиотеки (boost.filesystem или базовые средства языка, или что-то еще) - являются обертками над функциями операционной системы для взаимодействия с файлами.

В Windows есть функция CreateFile, которая позволяет управлять, будет ли файл доступен сторонним приложениям, или нет. Аналогичное есть (должно быть :) ) в любой операционной системе. Хорошие обертки над функциями ОС или тоже позволяют это настраивать, или, для реализации единообразности взаимодействия с разными ОС, немного урезают функционал, оставляя только то, что поддерживается большинством ОС.

Лично я F.Open не узнаю, т.е. не могу судить об этой библиотеке.

Отвечая на вопрос: ничто не мешает Вашему ПО создавать объект ядра с теми настройками владения, какие Вам нужны, и держать его, сколько необходимо.

▲ 2

Лучше сразу закрывать всегда, как только прекращаете работу с файлом.
Я не уверена, но думаю, что его всё равно смогут редактировать, даже если он не закрыт. Проведите простой опыт: запустите программу в отладке и до f.close() попытайтесь открыть его вручную, изменить и сохранить эти изменения, и вы найдёте ответ на ваш вопрос.