2008-08-26 7 views
2

Voici le scénario:Meilleure architecture pour gérer les modifications du système de fichiers?

J'écris une application qui surveillera les changements dans un répertoire spécifique. Ce répertoire sera inondé de milliers de fichiers chaque minute avec un GUID "presque" unique. Le format de fichier est le suivant:

GUID.dat où GUID == xxxxxxxxxxxxxxxxxxxxxxxxxxxxx (le contenu interne ne sont pas pertinentes, mais il est juste des données texte)

Mon application sera une forme qui a une seule zone de texte qui montre tous les fichiers qui sont ajoutés et supprimés en temps réel. Chaque fois qu'un nouveau fichier arrive, je dois mettre à jour la zone de texte avec ce fichier, MAIS je dois d'abord m'assurer que ce GUID semi-unique est vraiment unique, si c'est le cas, mettre à jour la zone de texte avec ce nouveau fichier.

Lorsqu'un fichier est supprimé de ce répertoire, assurez-vous qu'il existe, puis supprimez-le, mettez à jour la zone de texte en conséquence. Le problème est que j'utilise le gestionnaire de fichiers .NET et il semble qu'il y ait un tampon interne qui se bloque chaque fois que le fichier (buffersize + 1) -th entre. J'ai également essayé de garder un Liste interne dans mon application, et ajoutez simplement chaque fichier qui vient, mais faites le contrôle GUID unique plus tard, mais pas de dés.

Répondre

3

Quelques choses que j'ai dans ma tête:

  • Si le guid est pas unique ne serait-il pas écraser le fichier avec le même nom, ou la vérification basée sur une recherche qui fait-il des actions externes (p. ex. vérifier les archives)? (c'est-à-dire est-ce un moment YAGNI?)
  • J'ai déjà utilisé FileSystemWatcher avec assez de succès, pouvez-vous nous donner quelques idées sur comment vous faites réellement des choses?
  • Lorsque vous dites "pas de dés" lorsque vous travaillez avec votre liste personnalisée, quel était le problème? Et comment vérifiez-vous les modifications du système de fichiers sans FileSystemWatcher ?!

Désolé, pas encore de réponse, juste aimerait en savoir plus sur le problème :)

2

Je vous suggère de jeter un oeil à l'appel API SHChangeNotify, qui peut vous informer de toutes sortes d'événements shell. Pour surveiller l'activité de création et de suppression de fichiers, vous pouvez accorder une attention particulière aux arguments SHCNE_CREATE et SHCNE_DELETE.

Questions connexes