Fichier en cours d'utilisation [Résolu]

EvilGost 235 Messages postés lundi 16 décembre 2002Date d'inscription 16 mai 2011 Dernière intervention - 22 janv. 2007 à 15:05 - Dernière réponse : EvilGost 235 Messages postés lundi 16 décembre 2002Date d'inscription 16 mai 2011 Dernière intervention
- 22 janv. 2007 à 15:35
Bonjour à tous amis développeurs,

j'ai un problème bien épineux. Je développe une appli en VB.net 2005 qui verifie la présence en temps réél d'un fichier sur le réseau (800 Mo le bestiaux). Dès qu'il est détecté, je dois le copier en local.
Cependant, avec system.io.file.exist, ou meme le filesystemwatcher, ce fichier est défini comme présent par windows et donc, par .net avant même que celui-ci soit complet (
Je croyais avoir trouvé une solution, c'est-à-dire une boucle qui regardait si, une fois le fichier trouvé, la taille de celui-ci changeait, mais à partir du moment où on copie le fichier là ou je scan, windows défini la taille du fichier qu'il aura à la fin de la copie et non au fur et à mesure de la copie. En gros, même si le fichier est en cours de copie (ex: 10%), .net va me dire qu'il fait 800Mo au lieu de 80Mo.

Je cherche désespéremment une solution car je bloque un peu....

en vous remerciant par avance :)

EvilGost [;)]
Afficher la suite 

Votre réponse

3 réponses

EvilGost 235 Messages postés lundi 16 décembre 2002Date d'inscription 16 mai 2011 Dernière intervention - 22 janv. 2007 à 15:35
+3
Utile
une petite erreur s'est glissé, voici le code



                'on verifie qu'il n'y ai pas d'activité sur le fichier
                'eu ouvrant le fichier
               Path = "chemin du fichier"

                Do
                    System.Threading.Thread.Sleep(1000)
'pause


                    Try
                        MyFile = New System.IO.FileStream(sPath, IO.FileMode.Open)
                        MyFile.Close()
                        MyFile.Dispose()
                        bFileOpened = True
                    Catch ex As IOException
                        bFileOpened = False
                    End Try
                Loop While bFileOpened = False




EvilGost [;)]
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de EvilGost
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 22 janv. 2007 à 15:24
0
Utile
Utiliser la date de modification ca marche pas ?
Regarde du côté de la classe System.IO.File, tu as notamment GetLastAccessTime, GetLastWriteTime et GetCreationTime.

<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237
EvilGost 235 Messages postés lundi 16 décembre 2002Date d'inscription 16 mai 2011 Dernière intervention - 22 janv. 2007 à 15:34
0
Utile
merci à toi pour ta réponse, malheureusement, ce sont des dates inscrit à la premiere inscription du fichier.

Cependant, je crois avoir trouvé la solution en VB6, je retranscrit en .Net, je fais des tests, voici la solution:
On essaie d'ouvrir le fichier en lecture, si ca coince, c'est que le fichier est en cours d'utilisation sinon, c'est que c'est bon.

                'on verifie qu'il n'y ai pas d'activité sur le fichier
                'eu ouvrant le fichier
                Do
                    System.Threading.Thread.Sleep(1000) 'pause
                    Try
                        MyFile = New System.IO.FileStream(sPath, IO.FileMode.Open)
                        MyFile.Close()
                        MyFile.Dispose()
                        bFileOpened = True
                    Catch ex As IOException
                        bFileOpened = False
                    End Try
                Loop While bFileOpened = True

EvilGost [;)]
Commenter la réponse de EvilGost

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.