2010-02-18 4 views
1

Je crée un flux RSS à la demande à partir d'un dossier d'images. La création de flux est assez coûteuse sur de grands ensembles de fichiers évidemment, donc je cache le flux après la première création mais j'aimerais savoir si j'ai besoin de recréer le flux quand quelqu'un l'appelle.Déterminez quand les fichiers du dossier changent à la demande

Je pense que si je pouvais trouver un moyen de créer à bon marché un hachage unique de tous les fichiers et dates du fichier, alors quand le hachage a changé, je saurais générer à nouveau le flux.

Quelqu'un at-il des idées sur la façon de créer ce hash à moindre coût? Est-ce qu'un hash est le bon nom pour ce que je cherche à faire?

Edit:

Je connais un FileSystemWatcher existe exactement pour ce genre de chose. Mais je suis plus curieux à propos d'une technique à la demande pour le faire. J'ai eu d'autres cas où j'ai fait la même chose et utilisé un observateur de fichier pour obtenir les notifications, mais je pense que quelqu'un a une idée de ce qu'il faut faire lorsque vous ne pouvez pas obtenir les notifications modifiées par fichier ...

+6

Vous ne pouvez pas utiliser 'FileSystemWatcher' pour surveiller les changements? –

+1

+1 pour 'FileSystemWatcher', je recommande de l'utiliser simplement. –

+0

Je voudrais également utiliser le FileSystemWatcher. Conservez un état "sale" par fichier ou dossier. Si votre cache est créé, effacez tous les drapeaux sales (avant de remplir le cache!). Si vous remarquez via FileSystemWatcher qu'un fichier a été modifié, définissez l'état sale. C'est tout. – Patrick

Répondre

1

vous pouvez sélectionner tous les fichiers du dossier classés par date de modification en ordre décroissant, il vous suffit de vérifier les premières données de fichiers par rapport à la dernière date de création du flux et de savoir si vous devez créer le flux.

+0

J'ai eu une pensée similaire en utilisant les horodatages de fichiers pour détecter les changements. Cependant, la suppression de certains fichiers ne sera pas détectée de cette façon. – Jeff

+0

pouvez-vous vérifier l'heure modifiée sur le dossier. ce serait encore plus rapide (comme vous n'auriez pas besoin de faire défiler les fichiers) et serait également changé s'il y a des fichiers supprimés je pense. En fait, je viens de vérifier cela et il semble fonctionner, au moins sur ma machine –

+0

J'ai été en mesure d'obtenir la plupart de ce que je voulais en regardant le temps modifié du dossier. – Jeff

0

Attaquez le problème de l'autre point de vue (si vous avez accès à ce code).

Quand de nouveaux fichiers sont-ils créés? Avoir le code qui met dans les nouveaux fichiers kickoff régénération du fichier RSS (statique).

Questions connexes