Detection de copie d'un fichier dans un répertoire
4 réponses
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 ?
"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 ***************************************/
Bonjour.
"dark poulpo" <qsdqd@sss.ss> a écrit dans le message de news:
42619004$0$3113$8fcfb975@news.wanadoo.fr...
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
***************************************/
"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 ***************************************/