как грамотно проверить открыт ли файл

sanich
Дата: 18.11.2007 21:49:02
Знаю что тема много раз поднималась, но тем не менее для меня она еще актуальна.

Файлы открываемые из программы самые разные txt,jpg,bmp,xls,doc,pdf ... и возможно неизвестные мне форматы.

Поэтому приспособиться к неизвестным типам даже не знаю как.

xls,doc, мона ловить эксепшен на запись.
а как быть txt, jpeg даже если он открыт он позволяет открываться на запись и даже переименование.

Хотелось бы какой нибудь универсальный метод который подойдет ко всем файлам.
8-o
Дата: 18.11.2007 22:01:49
sanich

Непонтно, что ты хочешь, что сделал, и что не получилось
8-o
Дата: 18.11.2007 22:08:34
sanich

...
Может быть, вот так:
- попробовать заюзать АПИшную функцию CreateFile с флажком OF_SHARE_EXCLUSIVE?
Если файл уже кем-нибудь открыт, получишь отлуп.
Dimitry Sibiryakov
Дата: 19.11.2007 08:38:05

Если файл уже кем-нибудь открыт, получишь отлуп.

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

Posted via ActualForum NNTP Server 1.4

Anatoly Podgoretsky
Дата: 19.11.2007 08:44:09
Вообще то он не на это жалуется, если файл закрыт, то он не открыт. У него проблема с открытиыми файлами, ведь они могут быть открыты в режиме даже DENY_NONE, но автор также заикнулся об переименование, а вот это врядли запретишь на платформе НТ, для обычных файлов.
sanich
Дата: 19.11.2007 12:46:52
sanich

Непонтно, что ты хочешь, что сделал, и что не получилось


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

Как дождаться завершения работы процесаа знаю, но вот word,excel в одном процессе могут открывать несколько файлов, нужно это как то определять. Можно попробовать открывать файл на запись и ловить эксепшен.

С форматами jpeg,txt открывать файл на запись и ловить эксепшен бессмысленно т.к. они не запрещают запись в открытый файл и даже переименование. Здесь получится тока ловить звершение процесса.

Т.е. я описал способ дождаться завершения работы с файлами для форматов которые я знаю, но как быть с неизвестными форматами
sanich
Дата: 19.11.2007 12:47:53
????
Dim2000
Дата: 19.11.2007 12:53:08

sanich wrote:

> С форматами jpeg,txt открывать файл на запись и ловить эксепшен
> бессмысленно т.к. они не запрещают запись в открытый файл

Что ты курил и где это купить ?

Posted via ActualForum NNTP Server 1.4

sanich
Дата: 19.11.2007 12:58:30
Dim2000

sanich wrote:

> С форматами jpeg,txt открывать файл на запись и ловить эксепшен
> бессмысленно т.к. они не запрещают запись в открытый файл

Что ты курил и где это купить ?
Posted via ActualForum NNTP Server 1.4


аргументируй
sanich
Дата: 19.11.2007 14:08:58
Dimitry Sibiryakov

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


И как тогда узнать считала программа вест файл или нет?
Есть способ?