IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] Quelle méthode pour savoir l'état d'un fichier ?


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Chef de projet
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Points : 9
    Points
    9
    Par défaut [C#] Quelle méthode pour savoir l'état d'un fichier ?
    Bonjour,
    Je dois réaliser un service windows qui doit checker dans un dossier FTP si il y a des nouveaux fichiers qui ont été uploader. Si c'est le cas je lance une procédure de copie du dit fichier dans un dossier de backup et ensuite de supression sur le FTP. Pas bien compliqué jusqu'ici, mais la ou cela se corse pour moi, d'ou ma question, c'est de savoir si le fichier est totalement finis d'etre uploader avant d'entreprendre mes procédures ? Comment connaitre l'état du fichier, est il toujours en cours d'upload ou bien l'upload est finis ?

    Merci d'avance.

    Sylvain

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    A moins de faire une boucle qui passe une première fois, vérifie la taille du fichier puis repasse juste derrière pour voir si cette taille à changée, je ne vois pas....

  3. #3
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Sur certains serveur FTP, tant que le fichier n'est pas complètement uploadé on ne le voit pas. (Il a un nom temporaire et est caché).
    Ce n'est pas le cas du tien?

  4. #4
    Futur Membre du Club
    Profil pro
    Chef de projet
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    bon ben je viens de faire un test sur mon ftp, le resultat vient de tomber, il cache pas le fichier pendant l'upload...
    A peine l'upload commencé que je le liste deja dans le repertoire...
    A priori pas de Fichier temp... Pour info c'est un serveur Win 2003 avec un FTP sur IIS 6.0...

    Je vais essayer la solution de Morpheus, c'est pas cool mais c'est apparement la seul

    Si vous avez d'autres infos n'hesitez pas, je suis preneur.
    Merci pour vos réponses

    Sylvain

  5. #5
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    peut-être un timer qui regarde toutes les secondes pour pas trop soliciter les ressources

  6. #6
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    J'ai trouvé

    Essaye de l'ouvrir en mode exclusif (File.Open)

    Si tu as une exception (Genre fichier utilisé par un autre process) il est en cours d'upload

  7. #7
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    Citation Envoyé par abelman
    J'ai trouvé

    Essaye de l'ouvrir en mode exclusif (File.Open)

    Si tu as une exception (Genre fichier utilisé par un autre process) il est en cours d'upload
    mouais ... pas trés propre non plus

  8. #8
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par neo.51
    mouais ... pas trés propre non plus
    Elle est plus fiable que la votre . Le mieux est l'enemi du bien
    Ton timer peut bien tester la taille du fichier, mais tu n'as pas la maitrise de l'intervalle de temps au bout du quel le fichier changera de taille. ça dépend comment c'est fait sur le serveur FTP. Tant qu'il ne fait pas de flush vers le disque, la taille du fichier ne change pas.

  9. #9
    Futur Membre du Club
    Profil pro
    Chef de projet
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Ne vous battez pas les gars, je crois que j'ai la soluce

    Trouvé sur la faq d'un petit site :

    Comment surveiller les modifications d'un fichier grâce aux notifications système?

    http://faqcsharp.developpez.com/?page=file#file_watcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Watch(@"c:\rep", "*");
    Donc au debut de l'upload, l'appli me renvoie un created et quand l'upload ce finit, l'appli me renvoie un changed.

    Bon par contre, maintenant il faut que je prenne une decision, est ce que je laisse la surveillance tout le temps ou non. Si oui je sens que je vais galerer car je n'ai jamais fait de multithread
    C'est que je débute un peu en C# moi...

  10. #10
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    3 modos qui ont tous bossé sur la FAQ C# qui participent au thread alors que la réponse est dans la FAQ

    vivement le week-end hein ?

    Oui il faut que tu laisses la surveillance tout le temps, par contre je comprend pas bien ton histoire de multithread ...

  11. #11
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par freesly
    Ne vous battez pas les gars, je crois que j'ai la soluce

    Trouvé sur la faq d'un petit site :

    Comment surveiller les modifications d'un fichier grâce aux notifications système?

    http://faqcsharp.developpez.com/?page=file#file_watcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Watch(@"c:\rep", "*");
    Donc au debut de l'upload, l'appli me renvoie un created et quand l'upload ce finit, l'appli me renvoie un changed.

    Bon par contre, maintenant il faut que je prenne une decision, est ce que je laisse la surveillance tout le temps ou non. Si oui je sens que je vais galerer car je n'ai jamais fait de multithread
    C'est que je débute un peu en C# moi...
    Mouais ...
    Je suis sceptique quand même. Es tu certain de n'avoir le changed qu'une seule fois? Essaye de faire un upload d'un gros fichier pour voir

  12. #12
    Futur Membre du Club
    Profil pro
    Chef de projet
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par neo.51
    vivement le week-end hein ?
    Oui je crois que c'est le cas pour tout le monde, moi le premier

    Citation Envoyé par neo.51
    Oui il faut que tu laisses la surveillance tout le temps, par contre je comprend pas bien ton histoire de multithread ...
    Et bien c'est simple, vu que je vais continuellement surveiller le dossier avec mon service windows et que je vais devoir traiter les copy et delete quand j'aurais une alerte tout en continuant la surveillance, cela me fera bien deux activités en parallèle pour une même appli, non ?

    Citation Envoyé par abelman
    Je suis sceptique quand même. Es tu certain de n'avoir le changed qu'une seule fois? Essaye de faire un upload d'un gros fichier pour voir
    Oui je n'ai qu'un seul changed, aprés ton poste j'ai fais un test avec un fichier d'un Giga (heureusement le serveur est en interne). Ca le fait nickel.

    En tout cas merci à vous tous pour votre aide, mais si je peux abuser un petit peu, a votre avis, multithread ou pas besoin du tout je me goure sur toute la ligne ?

  13. #13
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    Sur les serveurs ftp, il y a une date d'ajout pour chaque fichier il me semble...

    Il suffirait donc de comparer ce DateTime avec l'actuel...

    Enfin c'est ce que je ferais

  14. #14
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par abelman
    Mouais ...
    Je suis sceptique quand même. Es tu certain de n'avoir le changed qu'une seule fois? Essaye de faire un upload d'un gros fichier pour voir
    +1: J'ai un doute comme Abel sur ce coup...

  15. #15
    Futur Membre du Club
    Profil pro
    Chef de projet
    Inscrit en
    Novembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Morpheus
    +1: J'ai un doute comme Abel sur ce coup...
    Je serais curieux de savoir ce qui vous rend aussi sceptique ?
    Mes test me confirme la bonne marche de la fonction mais peut etre pourrais je faire des tests supplementaires par rapport aux questions que vous vous posez tous les deux ?

    Il serait dommage que mon appli fonctionne mal au final, et vos doutes me mettent mal à l'aise

  16. #16
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par freesly
    Je serais curieux de savoir ce qui vous rend aussi sceptique ?
    Mes test me confirme la bonne marche de la fonction mais peut etre pourrais je faire des tests supplementaires par rapport aux questions que vous vous posez tous les deux ?

    Il serait dommage que mon appli fonctionne mal au final, et vos doutes me mettent mal à l'aise
    L'essentiel est que tu aies testé que cela fonctionne dans ta config.
    Pense juste à le retester si tu changes de serveur FTP

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/08/2007, 22h58
  2. Réponses: 7
    Dernier message: 04/04/2007, 13h37
  3. Réponses: 16
    Dernier message: 09/10/2006, 18h25
  4. [C#] Quelle méthode pour imprimer un form?
    Par Bapt.ice dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/07/2006, 19h49
  5. Réponses: 3
    Dernier message: 22/04/2006, 06h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo