Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Detection de copie d'un fichier dans un répertoire

4 réponses
Avatar
Dezz
Bonjour,

je cherche à détecter la copie d'un fichier dans un répertoire.

Pour cela, j'utilise la fonction ReadDirectoryChangesW de l'API.
J'arrive à savoir si un fichier est ajouté, mais je voudrais savoir si
la copie est finie.

J'ai essayé de nombreuses méthodes tout aussi approximatives les unes
que les autres, mais ca ne fonctionne pas. Et là, je séche.

Exemple de certaines méthodes sus-dites :
- vérification de la taille du fichier copié toutes les n secondes
- notification par ReadDirectoryChangesW des changements apportés à
certains attributs du fichier

Quelqu'un a-t-il une solution ? ou juste une idée ?

Merci,
Dezz

4 réponses

Avatar
dark poulpo
tester si le fichier est verouillé

--
-----
http://dark.freezee.org/
http://www.dark-team.cjb.net/
Avatar
Dezz
dark poulpo a écrit :
tester si le fichier est verouillé




C'est à dire ? Tester si le fichier est verrouillé en lecture seule ?

Cdlt,
Dezz
Avatar
dark poulpo
oué, mais bon je dis ca comme ca, ca va peut etre pas marcher
tu fais un fopen() et tu verras bien

--
-----
http://dark.freezee.org/
http://www.dark-team.cjb.net/
Avatar
Patrick 'Zener' Brunet
Bonjour.

"dark poulpo" a écrit dans le message de news:
42619004$0$3113$
oué, mais bon je dis ca comme ca, ca va peut etre pas marcher
tu fais un fopen() et tu verras bien




On peut faire beaucoup plus fin en jouant avec les options de CreateFile().

Cette primitive est capable de gérer les conditions de partage et aussi de
"juste essayer". Il est donc possible de l'utiliser pour tester si un
fichier est devenu entièrement disponible, donc si le process qui écrivait
dedans a fini.

Je vous suggère de monter une boucle avec un tel test, un Sleep(), et une
condition de sortie en abandon évidemment (et alors là les fonctions
WaitForSingleObject() et WFMultipleOs() peuvent donner un résultat encore
meilleur).

Je crois qu'il y a des samples sur ce thème dans le SDK : ça doit s'appeler
FWatch (?) cherchez dans la MSDN...

Cordialement,

--

/***************************************
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
***************************************/