У меня есть файл, который я хочу прочитать. Файл может быть в любой момент перезаписан другим процессом. Я не хочу блокировать это письмо. Я готов управлять коррупцией для данных, которые я читал, но не хочу, чтобы мое чтение каким-либо образом меняло поведение процесса записи.
Процесс, который записывает файл, - это программа delphi, работающая локально на сервере. Он открывает файл, используя fmCreate. fmCreate пытается открыть файл исключительно и не удается, если в файле есть другие дескрипторы.
Я читаю файл из скрипта python, который удаляет файл удаленно через нашу сеть.
Меня интересует, есть ли решение, независимо от того, поддерживается ли оно python или delphi. Я хочу знать, есть ли способ сделать это под окнами без изменения программы записи.
Изменение: повторить, это не дубликат. Другой вопрос заключался в попытке получить доступ для чтения к файлу, на который записывается. Я хочу, чтобы у автора был доступ к файлу, который я открыл для чтения. Это разные вопросы (хотя я боюсь, что ответ будет схожим, что это невозможно).
Вы можете настроить драйвер фильтра, который может действовать двумя способами: (1) изменить флаги при открытии файла и (2) он может захватить данные, когда он будет записан в файл, и сохранить копию данных в другом месте.
Этот подход гораздо более легкий и эффективный, чем служба теневого копирования томов, упомянутая в комментариях, однако для этого требуется наличие драйвера фильтра. На рынке существует несколько драйверов (т.е. Это продукты, которые включают драйвер и позволяют писать бизнес-логику в пользовательском режиме), но они являются дорогостоящими и могут быть излишним в вашем случае. Тем не менее, если вам нужна вещь только для частного использования, свяжитесь со мной конфиденциально для получения лицензии на наш CallbackFilter.
Обновление: если вы хотите, чтобы писатель открыл файл, который уже был открыт, фильтр, который будет изменять флаги при открытии файла, является вашим единственным вариантом.