2009-06-30 16 views
6

Tôi đang phát triển một ứng dụng trong Cocoa. Tôi muốn liên tục kiểm tra xem nội dung của tệp ở một vị trí cụ thể có thay đổi hay không (như FileSystemWatcher trong .NET). Vui lòng bất cứ ai cho tôi giải phápTương đương với FileSystemWatcher (.NET) trong Cocoa

+3

Chỉ cần một gợi ý: "cho tôi một giải pháp" có thể được hiểu như sắp tắt hơi mài mòn bằng tiếng Anh, và cũng ngụ ý rằng bạn có thể không đã tìm kiếm một câu trả lời cho chính mình. Đó là hình thức tốt cho Google trước khi đăng câu hỏi. :-) –

Trả lời

6

Như Diederik nói, FSEvents là API Carbon của Apple để nghe sự kiện hệ thống tệp. Ai đó đã tạo ra một trình bao bọc Cocoa/Objective-C cho FSEvents có tên là SCEvents dễ sử dụng hơn một chút.

+1

Là một pedantic sang một bên, FSEvents không phải là một API Carbon; nó là một phần của khung dịch vụ cốt lõi. – briankc

1

FSEvents rất tuyệt, nhưng chúng được sử dụng để giám sát các thư mục. Để theo dõi một tập tin bạn sẽ muốn kiểm tra các kqueues. Hãy thử "man kqueue" trong nhà ga.

+0

SCEvents là lựa chọn tốt hơn cho ai đó đang tìm kiếm giải pháp Cocoa. –

+0

FSEvents vẫn còn cho các thay đổi thư mục mặc dù, và nó có vẻ như SCEvents là một wrapper cho FSEvents. Câu hỏi yêu cầu theo dõi một tệp. Kqueues phù hợp hơn cho điều đó. Các liên kết đến SCEvents ở trên cũng tham chiếu UKKQueue, mà có thể là một wrapper tốt quá. –

2

Một tùy chọn khác là uống trực tiếp từ/dev/fsevents firehose. Tôi làm việc trên một ứng dụng thực hiện chính xác điều này và nó hoạt động rất tốt. Bạn có thể được thông báo nếu một tập tin thay đổi, bị xóa, được di chuyển, có các thuộc tính thay đổi, vv Cấp, đây không phải là một "Cocoa" tùy chọn vì nó chủ yếu là mã C, nhưng chúng tôi đang sử dụng điều này trong một ứng dụng Cocoa.

1

Nhìn vào tài liệu hướng dẫn lớp NSWorkspace.