2009-05-01 28 views
6

Tôi muốn biết khi nào một tệp mới được tạo trên một thư mục cụ thể, thay vì quét thư mục theo thời gian.Hệ điều hành có thể cho tôi biết khi một tệp mới được tạo không?

Tôi hiểu rằng có một cách để làm cho hệ điều hành cho chương trình của tôi biết rằng tệp mới đã được tạo. Làm thế nào nó hoạt động?

Như đã đề cập, điều này có điểm tương đồng với How to be notified of file/directory change in C/C++, ideally using POSIX

Trả lời

1

Sử dụng Net trên Windows (không chắc chắn về Linux/mono), bạn có thể sử dụng một FileSsytemWatcher để xem cho các tập tin mới và nâng cao sự kiện khi chúng được tạo ra.

Từ MSDN:

Sử dụng FileSystemWatcher để xem cho thay đổi trong một thư mục chỉ định. Bạn có thể xem các thay đổi trong tệp và các thư mục con của thư mục được chỉ định . Bạn có thể tạo thành phần để xem tệp trên máy tính cục bộ, ổ đĩa mạng hoặc máy tính từ xa.

MSDN Page

+0

FileSystemWatcher có thể xem thư mục theo cách đệ quy không? – Geo

1

Với Mac OS X, chức năng này là một phần của API Spotlight.

2

FileSystemWatcher là câu trả lời - và nó hoạt động đệ quy.

Có một ví dụ here (tìm kiếm FileSystemWatcher)

3

FAM cung cấp một tập tin phù hợp -Xem giao diện trên tất cả các UNIX. Trên Linux, daemon back-end có thể được thay thế bằng Gamin, nhưng một chương trình được liên kết với FAM sẽ làm việc với Gamin tốt. (Phía sau hậu trường, FAM có thể đang sử dụng bỏ phiếu, và Gamin có thể đang sử dụng inotify hoặc dnotify hoặc kqueue, nhưng bạn không cần phải lo lắng về việc thực hiện.)

OS X.5 có FSEvents, rất khác trong đó nó giám sát toàn bộ hệ thống thay vì các tập tin và thư mục được chỉ định, nhưng cũng sẽ đáp ứng nhu cầu của bạn.

Trên Windows, hãy xem Find(First|Next|Close)ChangeNotification or ReadDirectoryChanges.

Các vấn đề liên quan