2010-10-26 4 views
4

J'ai utilisé FileInfo.LastWriteTime pour savoir quand était la dernière fois où un certain fichier, disons "c: \ temp \ test_file.txt" a été changé.Toute autre approche?

Cela fonctionne très bien quand quelqu'un ouvre réellement le fichier, apporte des modifications et ensuite enregistre - le FileInfo.LastWriteTime pour ce chemin est mis à jour avec l'heure où le fichier a été changé.

Mais ce qui se passe dans le scénario suivant:

Copier un fichier avec le même nom mais avec un contenu différent d'un autre emplacement sur le disque, et collez-le dans le répertoire « c: \ temp \ » dossier (remplacer l'actuel fichier) - le fichier "c: \ temp \ test_file.txt" a été changé (remplacé par un fichier avec le même nom mais avec un contenu différent), mais le LastWriteTime du fichier "c: \ temp \ test_file.txt "n'est pas l'heure à laquelle il a été écrasé, mais c'est en fait le" LastWriteTime "du fichier que nous avons copié, et peut être significativement plus tôt que le moment où il a été remplacé.

Dans le cas où j'ai besoin de savoir le moment où le fichier a été remplacé, est-il autre, et s'il vous plaît ne pas suggérer des solutions comme l'enregistrement sur les événements FileChange - Je suis à la recherche d'une solution dans laquelle je Je n'ai pas besoin de garder un programme en cours d'exécution comme un service - mon application peut ne pas être exécutée tout le temps, et j'ai besoin de savoir quand le fichier a été remplacé même si ce moment était lorsque ma demande a été fermée.

+0

J'ai tagué ceci avec .NET, mais vous voudrez peut-être ajouter un tag pour la langue appropriée. Les gens recherchent et filtrent les questions par mots-clés, vous obtiendrez probablement de meilleures réponses. Je suppose C# ou VB, mais je ne suis pas sûr de ce qui est basé sur le contenu actuel de votre question. – eldarerathis

+1

Voulez-vous vraiment savoir quand le fichier a été modifié, ou voulez-vous savoir si le fichier a été modifié? – Dialecticus

+0

Salut Dialecticus, je sais, je veux savoir SI le fichier a été changé, mais maintenant que je l'ai dit, vous commencerez probablement à me donner des solutions comme: "Enregistrer une copie du fichier dans un répertoire, et juste comparer le courant fichier à celui que vous avez mis de côté - cela ne m'aidera pas puisque je regarde beaucoup de nombreux fichiers !! et les stocker tous à côté prend beaucoup de temps et d'espace.Toutes autres suggestions? – Liorp

Répondre

1

Dans les circonstances que vous décrivez dans votre question, vous pouvez utiliser l'heure de création du fichier, car elle changera lorsque vous copiez un fichier.

Je suggère que vous devrez vérifier à la fois la dernière heure d'écriture et l'heure de création du fichier pour déterminer la plupart des changements.

Sinon, vous pouvez regarder la taille du fichier, et si cela ne suffit pas, vous devrez générer un hachage sur le contenu du fichier.

modifier

Si vous utilisez un objet FileInfo vous devez appeler la méthode Refresh à mettre à jour la dernière fois en écriture, créez le temps, le fichier existe, etc, propriétés.

+0

Salut Enigmatifity, Ça ne fonctionne pas. FileInfo.CreationTime ne correspond pas au moment de l'opération de collage (overriden), mais il est antérieur à cela. D'autres suggestions? Merci à Advanced! – Liorp

+0

Salut Enigmatifity, j'ai lu votre 'edit' et j'ai essayé d'appeler la méthode FileInfo.Refresh() avant de regarder la dernière écriture, le temps d'accès et de création, mais cela n'a pas aidé. – Liorp

+0

D'autres suggestions? – Liorp

0

Pour cela, vous devez utiliser FileInfo .CreationTime() & ainsi que FileInfo .LastWriteTime() méthodes de combinaison pour l'enregistrement.

Questions connexes