Существует ли «отпечаток папки», позволяющий определить, изменилось ли содержимое папки между двумя моментами времени? Я ⇐ C#
Существует ли «отпечаток папки», позволяющий определить, изменилось ли содержимое папки между двумя моментами времени? Я
Я ищу самый быстрый способ (на C#/ASP.NET) определить, изменилось ли что-либо внутри папки между двумя моментами времени. Мне не нужно знать файлы, общий размер или что-либо еще о папке. Мне просто нужно знать, изменилось ли что-нибудь.
Поскольку у меня нет доступа к внешней области, в которой будет работать такой метод обнаружения изменений папок, я не могу использовать FileSystemWatcher, который должен быть удален, когда он больше не нужен (он реализует IDisposable и из-за архитектуры того, что мне нужно, я не могу использовать его на практике).
Было бы идеально, если бы существовал какой-то GUID «отпечатка папки», который менялся бы при изменении содержимого папки. Затем я мог бы просто сравнить GUID последнего отпечатка пальца с текущим отпечатком пальца и вернуть true, если два отпечатка пальца были разными, что указывает на то, что в папке что-то изменилось.
В идеале это будет работать точно так же, как значение, возвращаемое функцией Assembly.GetEntryAssembly().ManifestModule.ModuleVersionId, которая дает вам GUID «отпечатка пальца» текущей сборки вашего приложения, что затем позволяет вам обнаружить если ваше приложение было перекомпилировано между двумя моментами времени.
Примерно так:
Примечание: «System.IO.GetFolderFingerprint()» — это воображаемый метод.
публичный статический класс FolderChangeChecker { частная константная строка _path = "c:/path/to/folder"; частный статический Guid _originalFingerprint = System.IO.GetFolderFingerprint(_path); public static bool FolderHasChanged() { return System.IO.GetFolderFingerprint(_path) != _originalFingerprint; } } Пожалуйста, дайте мне знать, если есть способ сделать это быстро.
Я ищу самый быстрый способ (на C#/ASP.NET) определить, изменилось ли что-либо внутри папки между двумя моментами времени. Мне не нужно знать файлы, общий размер или что-либо еще о папке. Мне просто нужно знать, изменилось ли что-нибудь.
Поскольку у меня нет доступа к внешней области, в которой будет работать такой метод обнаружения изменений папок, я не могу использовать FileSystemWatcher, который должен быть удален, когда он больше не нужен (он реализует IDisposable и из-за архитектуры того, что мне нужно, я не могу использовать его на практике).
Было бы идеально, если бы существовал какой-то GUID «отпечатка папки», который менялся бы при изменении содержимого папки. Затем я мог бы просто сравнить GUID последнего отпечатка пальца с текущим отпечатком пальца и вернуть true, если два отпечатка пальца были разными, что указывает на то, что в папке что-то изменилось.
В идеале это будет работать точно так же, как значение, возвращаемое функцией Assembly.GetEntryAssembly().ManifestModule.ModuleVersionId, которая дает вам GUID «отпечатка пальца» текущей сборки вашего приложения, что затем позволяет вам обнаружить если ваше приложение было перекомпилировано между двумя моментами времени.
Примерно так:
Примечание: «System.IO.GetFolderFingerprint()» — это воображаемый метод.
публичный статический класс FolderChangeChecker { частная константная строка _path = "c:/path/to/folder"; частный статический Guid _originalFingerprint = System.IO.GetFolderFingerprint(_path); public static bool FolderHasChanged() { return System.IO.GetFolderFingerprint(_path) != _originalFingerprint; } } Пожалуйста, дайте мне знать, если есть способ сделать это быстро.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение