Похоже, вы хотите записать в файл журнала, когда ваш файл журнала читается извне или что-то в этом роде. Если это так, есть значение NotifyFilters, LastAccess. Убедитесь, что этот параметр установлен как один из флагов в свойстве FileSystemWatcher.NotifyFilter. Изменение последнего времени доступа приведет к запуску события «Изменено» в FileSystemWatcher.
В настоящее время FileSystemWatcher не позволяет напрямую дифференцировать чтение и изменение; они оба запускают событие Changed, основанное на «изменении» на LastAccess. Таким образом, было бы невозможно наблюдать за чтением большого количества файлов. Тем не менее, вы, кажется, знаете, какой файл вы смотрите, поэтому, если у вас есть объект FileInfo для этого файла, а FileSystemWatcher выпустил событие Changed, вы можете получить новый и сравнить значения LastAccessTime. Если время доступа изменилось, а LastWriteTime - нет, ваш файл будет только прочитан.
Теперь, в простейших условиях, изменения, внесенные вами в файл во время его чтения, не будут отображаться сразу в другом приложении, и вы не сможете «попасть туда первым», заблокировать файл и напишите ему, прежде чем они это видят. Таким образом, вы не можете использовать FileSystemWatcher для «перехвата» запроса на чтение и отображения содержимого, которое вы хотите видеть в этом приложении. Единственный способ, которым пользователь другого приложения может видеть то, что вы только что написали, - это приложение, которое также просматривает файл и перезагружает файл. Это запустит другое событие Changed, вызывая бесконечный цикл, пока другое приложение продолжает перезагружать файл.
Вы также получите событие Changed для чтения и записи. Открытие файла в текстовом редакторе (практически любой будет), внесение некоторых изменений, а затем сохранение приведет к пожару двух Измененных событий, если вы ищете изменения в режиме последнего доступа. Первый будет отключен, когда файл откроется редактором; в то время вы не сможете сказать, что запись произойдет, поэтому, если вы ищете чистые доступа только для чтения к файлу, вы являетесь SOL.
Это кажется странным требованием. можете ли вы расширить свою конечную цель? – luke
@ luke - Что я хотел бы сделать, так это зашифровать часть файла, но когда веб-приложение (которое я не контролирую) переходит к чтению этого файла, я расшифрую зашифрованную часть для него. –
кажется, что лучший способ решить это - просто настроить более мелкозернистый контроль доступа, чтобы только веб-приложение (и ваше приложение) могло читать файл, тогда вам вообще не понадобилось бы его зашифровывать. – luke