Удаление файла
От: Аноним  
Дата: 23.08.05 19:48
Оценка:
Господа, возникла проблема
Закачиваю данные — обновление программы — функцией URLDownloadToFile
Клиент жалуется, что иногда случается такое, что файл не перезаписывается, хотя функция не матюкается
т.е. программа не видит никаких проблем в работе (что странно — проверял, функция вылетает, если не может сохранить закачанные данные).
Ну, все может быть. Придумал сначала удалять перезаписывымаемый файл, для проверки . И вот, если оказывается, что файл занят другим процессом, как его освободить и удалить?
Можно конечно выкрутится, выкинуть сообщение, что мол перезапись невозможна, т.к. файл занят, но уже интересно само решение такой проблемы как таковой
Спасибо
Re: Удаление файла
От: vopl Россия  
Дата: 24.08.05 05:47
Оценка:
Здравствуйте, <Аноним>, Вы писали:

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


А кто его держит?

А>, как его освободить и удалить?


Если занят — то не удалять а переименовывать.

А>Можно конечно выкрутится, выкинуть сообщение, что мол перезапись невозможна, т.к. файл занят, но уже интересно само решение такой проблемы как таковой

А>Спасибо
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Удаление файла
От: Аноним  
Дата: 24.08.05 08:19
Оценка:
Здравствуйте, vopl, Вы писали:

V>А кто его держит?


файл может быть открыть пользователем непосредственно через ассоциированную программу/редактор...
если любой процесс не откроет файл с доступом SHARE_DELETE, то его другой процесс фиг удалит

А>>, как его освободить и удалить?


V>Если занят — то не удалять а переименовывать.


насколько я помню, переименование заключается в удалении и создании с новым именем
и даже если нет, то все равно не выйдет.
... откройте например в студии проект и попробуйте переименовать папку с проектом или просто *.ncb файл
система не даст — Студия держит файл
Re[3]: Удаление файла
От: vopl Россия  
Дата: 24.08.05 08:44
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>файл может быть открыть пользователем непосредственно через ассоциированную программу/редактор...


Насколько разумными будут попытки рубить ресурсы ассоциированной программы/редактора во время ее работы? Такое мероприятие чем-то попахивает диверсией...

А>если любой процесс не откроет файл с доступом SHARE_DELETE, то его другой процесс фиг удалит


FILE_SHARE_DELETE Enables subsequent open operations on the object to request delete access. Otherwise, other processes cannot open the object if they request delete access.
If the object has already been opened with delete access, the sharing mode must include this flag.

Windows Me/98/95: This flag is not supported.

А>насколько я помню, переименование заключается в удалении и создании с новым именем

А>и даже если нет

нет

А>, то все равно не выйдет. ... откройте например в студии проект и попробуйте переименовать папку с проектом или просто *.ncb файл

А>система не даст — Студия держит файл

Не могу проверить на FAT но на NTFS под winXP очень даже переименовывает аж бегом. И используемые файлы(ncb файл от солюшна, загруженного в студию, загруженные исполняемые модули, ...) и содержащие их папки.

смотри

BOOL MoveFileEx(
  LPCTSTR lpExistingFileName,
  LPCTSTR lpNewFileName,
  DWORD dwFlags
);


.. а вообще тебе, ИМХО, надо с заказчиком просоветоватся насчет поведения программы в этом случае. Я бы предложил разделить источник для просмотра внешней компонентой и приемник для складирования вновь-добытой информации
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Удаление файла
От: Аноним  
Дата: 24.08.05 09:35
Оценка:
Здравствуйте, vopl, Вы писали:

V>Насколько разумными будут попытки рубить ресурсы ассоциированной программы/редактора во время ее работы? Такое мероприятие чем-то попахивает диверсией...


диверсией пахнет то, что пытаются открыть файл, служащий для работы программы
Дело в том, что эти файлы — флеш-мувики. Ничего удивительного, что файлы могут просматриваться юзером отдельно.
"Юзверь и любопытство неразделимы" (с) о кошках, модифицировано
А мне их оюновлять надо. И если юзверь пытает обновлять файлы и держать их от перезаписи... С другой стороны, Флеш Плейер позволяет удалять мувик даже если он просматривается.
Я могу предположить, что сам компонент — АктивИкс держит мувики после закрытия, но... очень маловероятно.

А>>насколько я помню, переименование заключается в удалении и создании с новым именем

А>>и даже если нет

V>нет


а как именно?


V>Не могу проверить на FAT но на NTFS под winXP очень даже переименовывает аж бегом. И используемые файлы(ncb файл от солюшна, загруженного в студию, загруженные исполняемые модули, ...) и содержащие их папки.


я сорри, действительно заблокированные от удаления файлы перименовываются
Re: Удаление файла
От: BlackHeretic Израиль  
Дата: 24.08.05 09:48
Оценка:
Здравствуйте, Аноним, Вы писали:

Я так понимаю, что юзер определяет куда ему скачать файл?
Тогда скачивай файлы в одно определенное место, а потом делай копию в место определенное юзверем. У далить файл из временного хранилища проблемы не будет, так как он не открыт никем, а вот при попытке копирования в открытый кем-то файл можно с чистой совестью сказать, что переписать файл нет возможности, так как он занят другой прогой. Типа "освободите файл и нажмите [Try again]".
Это подойдет?
ICQ 156156278
Re[2]: Удаление файла
От: Аноним  
Дата: 24.08.05 10:07
Оценка:
Здравствуйте, BlackHeretic, Вы писали:

BH>Здравствуйте, Аноним, Вы писали:


BH>Я так понимаю, что юзер определяет куда ему скачать файл?

BH>Тогда скачивай файлы в одно определенное место, а потом делай копию в место определенное юзверем. У далить файл из временного хранилища проблемы не будет, так как он не открыт никем, а вот при попытке копирования в открытый кем-то файл можно с чистой совестью сказать, что переписать файл нет возможности, так как он занят другой прогой. Типа "освободите файл и нажмите [Try again]".
BH>Это подойдет?

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

останавливаюсь пока на том, что прерываю обновление и "отпустите файл и нажмите Повтор"
Re[5]: Удаление файла
От: vopl Россия  
Дата: 24.08.05 11:22
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>


А>диверсией пахнет то, что пытаются открыть файл, служащий для работы программы


Да уж... Но в любом случае — наличие диверсии.

А>Дело в том, что эти файлы — флеш-мувики. Ничего удивительного, что файлы могут просматриваться юзером отдельно.

А>"Юзверь и любопытство неразделимы" (с) о кошках, модифицировано
А>А мне их оюновлять надо. И если юзверь пытает обновлять файлы и держать их от перезаписи... С другой стороны, Флеш Плейер позволяет удалять мувик даже если он просматривается.
А>Я могу предположить, что сам компонент — АктивИкс держит мувики после закрытия, но... очень маловероятно.

А по русски это так делается так

1 Удалить старую версию мувика
1.1 Если не удаляется то переименовать во временную папку на этом же диске с удалением после перезагрузки
2 Записать новую



А>>>насколько я помню, переименование заключается в удалении и создании с новым именем

А>>>и даже если нет

V>>нет


А>а как именно?


Точно не знаю и присоединяюсь к вопросу.


V>>Не могу проверить на FAT но на NTFS под winXP очень даже переименовывает аж бегом. И используемые файлы(ncb файл от солюшна, загруженного в студию, загруженные исполняемые модули, ...) и содержащие их папки.


А>я сорри, действительно заблокированные от удаления файлы перименовываются
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Удаление файла
От: Аноним  
Дата: 24.08.05 11:57
Оценка:
Здравствуйте, vopl, Вы писали:


V>А по русски это так делается так


V>1 Удалить старую версию мувика

V>1.1 Если не удаляется то переименовать во временную папку на этом же диске с удалением после перезагрузки
V>2 Записать новую

гы, чего-то я сам не дотумкал сразу...
сенкс
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.