Чтение файла Windows без запрета записи другим процессом в него [дубликата]

1

У меня есть файл, который я хочу прочитать. Файл может быть в любой момент перезаписан другим процессом. Я не хочу блокировать это письмо. Я готов управлять коррупцией для данных, которые я читал, но не хочу, чтобы мое чтение каким-либо образом меняло поведение процесса записи.

Процесс, который записывает файл, - это программа delphi, работающая локально на сервере. Он открывает файл, используя fmCreate. fmCreate пытается открыть файл исключительно и не удается, если в файле есть другие дескрипторы.

Я читаю файл из скрипта python, который удаляет файл удаленно через нашу сеть.

Меня интересует, есть ли решение, независимо от того, поддерживается ли оно python или delphi. Я хочу знать, есть ли способ сделать это под окнами без изменения программы записи.

Изменение: повторить, это не дубликат. Другой вопрос заключался в попытке получить доступ для чтения к файлу, на который записывается. Я хочу, чтобы у автора был доступ к файлу, который я открыл для чтения. Это разные вопросы (хотя я боюсь, что ответ будет схожим, что это невозможно).

  • 0
    @HarryJohnston Я думаю, что моя проблема отличается от этого вопроса, я не хочу доступ на чтение к исключительно открытому файлу, я хочу, чтобы файл все еще открывался приложением для записи (исключительно), даже если я пытаюсь его прочитать ( неэксклюзивно).
  • 0
    @RichardA вам нужно соответствующим образом обновить ваш вопрос, иначе он будет закрыт теми, кто не читает комментарии.
Показать ещё 17 комментариев
Теги:
winapi
filesystems

1 ответ

0

Вы можете настроить драйвер фильтра, который может действовать двумя способами: (1) изменить флаги при открытии файла и (2) он может захватить данные, когда он будет записан в файл, и сохранить копию данных в другом месте.

Этот подход гораздо более легкий и эффективный, чем служба теневого копирования томов, упомянутая в комментариях, однако для этого требуется наличие драйвера фильтра. На рынке существует несколько драйверов (т.е. Это продукты, которые включают драйвер и позволяют писать бизнес-логику в пользовательском режиме), но они являются дорогостоящими и могут быть излишним в вашем случае. Тем не менее, если вам нужна вещь только для частного использования, свяжитесь со мной конфиденциально для получения лицензии на наш CallbackFilter.

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

  • 0
    Что касается вашего последнего комментария: конечно, фильтр может извлечь данные из файла, не открывая его, что избавит читателя от необходимости открывать файл вообще?
  • 0
    Спасибо за ответ, Евгений. Я не очень разбираюсь в драйверах фильтров, поэтому ценю лидерство.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню