Với hệ điều hành Linux, có hệ thống con độc lập thông báo cho ứng dụng những thay đổi đối với hệ thống tệp.
Tuy nhiên, tôi chủ yếu là người dùng Windows, vì vậy tôi tự hỏi liệu có cách nào tương tự để theo dõi các thay đổi của hệ thống tệp không?
Với hệ điều hành Linux, có hệ thống con độc lập thông báo cho ứng dụng những thay đổi đối với hệ thống tệp.
Tuy nhiên, tôi chủ yếu là người dùng Windows, vì vậy tôi tự hỏi liệu có cách nào tương tự để theo dõi các thay đổi của hệ thống tệp không?
Câu trả lời:
Xem API FindFirstChangeNotification hoặc tệp đối tác .NET FileSystemWatcher
Nếu bạn đang sử dụng .net , hãy sử dụng FileSystemWatcher
. Thông tin thêm tại đây: http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
Nếu bạn đang sử dụng C , sử dụng FindFirstChangeNotification
, FindNextChangeNotification
, ReadDirectoryChangesW
. Thông tin thêm tại đây: http://msdn.microsoft.com/en-us/library/aa365261(VS.85).aspx
Trên OSX , api có liên quan là fsevents
api.
Tất cả chúng đều khác nhau một cách tinh tế và chúng đều có độ tin cậy đáng ngờ trong các trường hợp cạnh. Nói chung, bạn không thể phụ thuộc vào các apis này để có cái nhìn đầy đủ về tất cả các thay đổi 100% thời gian. Hầu hết mọi người sử dụng giám sát hệ thống tệp kết hợp nó với việc quét định kỳ để bù đắp thông tin bị mất hoặc không đầy đủ từ api đẩy.
hãy xem cái này: inotify-win, một cổng của công cụ inotifywait dành cho Windows
và cả cái này: inotify-tools
Hơi muộn nhưng ...
Windows có một cơ sở tương tự như các sự kiện OSX, nhờ đó bạn có thể theo dõi các sự kiện mà không cần chạy ứng dụng. Windows USN Journal theo dõi tất cả các thay đổi của tệp. Jeffrey Richter (tác giả của Advanced Windows) đã viết một bài báo tuyệt vời với các mẫu làm việc cho MSDN Journal. Cập nhật : bài viết bây giờ từ archive.org vì MSJ không còn trực tuyến tại MS.
Tài liệu MSDN cho USN Change Journals.
USN Change Journals có lẽ tốt hơn nếu bạn đang xây dựng các ứng dụng như công cụ sao lưu hoặc chỉ mục cần theo dõi toàn bộ khối lượng.
FileSystemWatcher
| FindFirstChangeNotification
PhillipBrandonHolmes đang nói đến ?
FileSystemWatcher () không đáng tin cậy chủ yếu là do việc xử lý lỗi đối với bộ đệm người xem ít nhiều chưa hoàn thiện. Do thiếu đường dẫn và thông tin xử lý lỗi chi tiết, Microsoft không cung cấp cho bạn cách nào để khôi phục hoặc thăm dò thủ công thư mục làm việc.
JNotify cho Windows cũng không đáng tin cậy vì lỗi này ^ bắt nguồn từ win32. JNotify sử dụng win32. Vì vậy, nó không khác gì FileSystemWatcher ().
Tôi đã tìm kiếm một chút, dường như tôi nhớ lại đã thấy một thứ gì đó tương tự cho Windows. Có FileSystemWatcher cho .NET. Nó chủ yếu dành cho NT hoặc XP và chuyển tiếp.