|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
Добрый день. Изложу вкратце мою ситуацию: Пишу программу для слежки в папке и ее под папках за появлением нового файла, если он появился то отправляется email пользователю, у меня связка WinForms + Windows Service, т.е. форма в которой указываю папку и к ней привязываю список email адресов, все это сохраняется в xml файле. Запущен сервис в Windows в котором запускается слежка за папками при помощи FileSystemWatcher, если файл пришел то отправляется email уведомление, что мол в такую-то папку пришел такой-то файл. Загвоздка в следующем: В сервисе после того, как приходит файл идет проверка атрибутов этого файла, если он скрытый то не слать email, т.к. FileSystemWatcher порождает событие даже тогда, когда просто открывают файл для редактирования (там создается временный фал, к примеру Word "~$кумент Microsoft Word" , а при сохранение еще добавляется "~wrf0000.tmp" или же при открытии OpenOffice ".~lock.Текстовый документ OpenDocument.odt#" ). Происходит ложная отправка email. При получении атрибутов файла к примеру просто Word (.docx) так и OpenOffice (.odt) пробовал при помощи GetFileInfo (там есть Attributes) и GetAttr , получаю Archive{32} . После того как открывают файл Word, появляется "~$кумент Microsoft Word" имеющий атрибут FileAttribute.Hidden Or FileAttribute.Archive{34} , а вот файл "~wrf0000.tmp" и ".~lock.Текстовый документ OpenDocument.odt#" имеют так же атрибуты Archive{32} , на которых и происходит ложное срабатывание. Вопрос: Как отфильтровать все временные файлы, дабы избежать ложной отправки email? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 10:17 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
Вообще, в папке для отправки редактирования не должно быть... То есть вам надо просто (макросом там, например) сохранять копию нужного файла в нужную папку - это и будет информация для отправки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 12:10 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
1) Отсеивать файлы по расширениям 2) Отсеивать файлы если имеется аттрибут скрытый ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 12:21 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
Как отфильтровать все временные файлы, дабы избежать ложной отправки email?По расширению, разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 12:23 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
AndreTMВообще, в папке для отправки редактирования не должно быть... То есть вам надо просто (макросом там, например) сохранять копию нужного файла в нужную папку - это и будет информация для отправки. Макрос не подойдет, просто есть программа которая раскладывает файлы по папкам, т.е. уже все фиксировано, нужно именно в тех папках и отлавливать появление файлов. VSVLAD1) Отсеивать файлы по расширениям 2) Отсеивать файлы если имеется аттрибут скрытый Я тоже придерживаюсь такой логики, но тогда как определиться с тем, какие расширения бывают у скрытых файлов? Заведомо то не известно какой файл придет. Сложно перечислить все расширения (либо где найти инфу какие бывают расширения у скрытых файлов, но я такого не нашел)... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 14:05 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
MrFedorVSVLAD1) Отсеивать файлы по расширениям 2) Отсеивать файлы если имеется аттрибут скрытый Я тоже придерживаюсь такой логики, но тогда как определиться с тем, какие расширения бывают у скрытых файлов? Заведомо то не известно какой файл придет. Сложно перечислить все расширения (либо где найти инфу какие бывают расширения у скрытых файлов, но я такого не нашел)...Вообще никакой логики в этом тексте. Либо проверяем атрибут "скрытый" и не важно, какое у файла расширение — считаем, что это мусор, и в почту не пускаем. Либо сравниваем название/расширение со списком расширений блокировочных файлов, а их не так много. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 14:45 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
MrFedorAndreTMВообще, в папке для отправки редактирования не должно быть... То есть вам надо просто (макросом там, например) сохранять копию нужного файла в нужную папку - это и будет информация для отправки. Макрос не подойдет, просто есть программа которая раскладывает файлы по папкам, т.е. уже все фиксировано, нужно именно в тех папках и отлавливать появление файлов. Тоже противоречие. Если "раскладкой" занимается отдельная прога - то откуда у вас взялось редактирование этих самых разложеннных файлов? Кроме того, ваш алгоритм всё равно приводит к тому, что файл отправляется только один раз - ведь после редактирования его атрибуты (за исключением даты-времени модификации) остаются всё теми же. Или вы подразумеваете, что этот ваш сервис как раз должен отслеживать события для "неотправки"? В любом случае - остаюсь при своем мнении. Уже подготовленные файлы должны быть доступны только программам и сервисам, а не пользователям (например, для просмотра). Пользователю должна отдаваться копия. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 15:08 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
1. Файлы находятся в сетевых папках и сотрудники могут заходить и открывать их для просмотра или печати (редактировать могут, но чаше не делают это), отсюда получаются временные файлы... 2. Вся проблема именно в том, что при помощи функции получения атрибута (GetFileInfo или же GetAttr), она не показывает их как Hidden, а показывает именно как Archive, такие же атрибуты имеет к примеру и обычный Word документ. Если бы атрибут был Hidden, то не возникло бы вопроса... Следовательно, можно некие файлы фильтровать по атрибуту Hidden, а проблемные файлы по расширению, но какой перечень этих расширений не знаю... Вот и спрашиваю, может есть какое-то более разумное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 15:19 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
2. Вероятно у них атрибут System. но какой перечень этих расширений не знаюДля ворда знаете? Знаете. Для OO? Тоже. Что мешает составить список из того, что знаете, и пополнять его по мере попадания в почту новых левых файлов? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 15:30 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
Antonariy2. Вероятно у них атрибут System. Для ворда знаете? Знаете. Для OO? Тоже. Что мешает составить список из того, что знаете, и пополнять его по мере попадания в почту новых левых файлов? У них точно не System. Скорее всего так и придется, по мере появления левых файлов, просто добавлять в исключения. Я просто думал есть, какое-то решение, может кто сталкивался... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 15:36 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
MrFedorМакрос не подойдет, просто есть программа которая раскладывает файлы по папкам, т.е. уже все фиксировано, нужно именно в тех папках и отлавливать появление файлов. Научите эту программу устанавливать файлам атрибут readonly. По отсутствию коего и отлавливайте временные файлы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 15:56 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
пробуй камнемНаучите эту программу устанавливать файлам атрибут readonly. Это чужая программа, ее ничему не научишь. авторможет кто сталкивался У вас слишком специфические условия :) А сам себя в них никто не поставит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 16:11 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
Antonariy, ТС нигде не указывал, что программа "чужая". Надежда умирает последней(с). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 16:23 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
СавсемГостьAntonariy, ТС нигде не указывал, что программа "чужая". Надежда умирает последней(с). Программа стороннего разработчика, в ней я не сделаю readonly... Приходится извращаться и искать пути обхода... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2011, 17:39 |
|
Получение атрибутов файла
|
|||
---|---|---|---|
#18+
При открытия на редактирование файлов MS Office, эти и временные файлы, открываются с эксклюзивными правами ( см. LockFile Function ), что вероятно и может служить искомым принаком. Проверить, открыт ли файл эксклюзивно, можно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2011, 01:08 |
|
|
start [/forum/topic.php?fid=60&msg=37150143&tid=2158915]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 321ms |
total: | 451ms |
0 / 0 |