Tôi đang cố gắng sử dụng FSEvents để phát hiện khi tệp được thêm/xóa khỏi thư mục cụ thể. Hiện tại, tôi đã triển khai một trình bao bọc đơn giản xung quanh FSEvents và nó hoạt động tốt: Tôi nhận được tất cả các sự kiện. NHƯNG vấn đề tôi có bây giờ là khi tôi đổi tên một tập tin trong Finder, tôi bắt 2 sự kiện riêng biệt: một sự kiện đầu tiên của loại "đổi tên" với tên tập tin cũ, và một cái khác với "đổi tên" và tên tệp mới. Các id sự kiện khác nhau giữa cả hai cuộc gọi.đổi tên tệp theo dõi/xóa bằng FSEvents trên Lion
Vì vậy, làm cách nào tôi biết được sự kiện "được đổi tên" nào chứa tên cũ và sự kiện nào chứa sự kiện cũ? Tôi đã thử tìm kiếm trong tài liệu, nhưng không may, kFSEventStreamEventFlagItemRenamed không được ghi lại ... có vẻ như mới trong Lion.
PS: cách duy nhất tôi có thể nghĩ đến là: trên sự kiện được đổi tên, tôi kiểm tra giao diện người dùng của mình để xem liệu tôi có một mục tương ứng với đường dẫn sự kiện hay không. Nếu vậy, tôi gắn cờ nó để đổi tên. Nếu không, tôi kiểm tra xem một mục đã được gắn cờ để đổi tên hay không và nếu có thì tôi đổi tên nó thành đường dẫn sự kiện mới. Nhưng tôi thực sự không thích ý tưởng này ...
Chỉnh sửa: Ok, tôi đã bổ sung điều gì đó dọc theo dòng "PS" của tôi: Tôi nhận thấy rằng khi đổi tên một cái gì đó, id của 2 sự kiện là các điều tra viên, để với id của sự kiện chứa tên mới, tôi có thể lấy sự kiện chứa tên cũ. Tôi chỉ cần sử dụng một từ điển nhỏ trong giao diện của tôi để lưu trữ id và các đường dẫn liên quan trong trường hợp sự kiện "được đổi tên".
Dù sao, bây giờ tôi có thể bắt đổi tên sự kiện, và thậm chí di chuyển các sự kiện: khi bạn di chuyển một tập tin, đó là một "đổi tên thành" sự kiện được đánh bắt bởi các FSEventStream ...
Nhưng, tôi vẫn có một cuối cùng vấn đề: xóa. Khi tôi xóa nội dung nào đó, nó được chuyển vào thùng rác: Tôi nhận được sự kiện "được đổi tên". Nhưng vấn đề là tôi không nhận được sự kiện đổi tên thứ hai. Chỉ sự kiện "đã sửa đổi" trên tệp .DS_Store. Tôi cho rằng tệp này được Trình tìm kiếm sử dụng để biết tệp nào nằm trong thùng, v.v. Vì vậy, tôi có thể kiểm tra sửa đổi tệp này và nhận sự kiện "đổi tên" cuối cùng để phát hiện tệp đã được gửi vào thùng. Nhưng tôi đang sử dụng TotalFinder trong đó sử dụng Asepsis, mà sửa đổi cách Finder lưu trữ. DS_Store tập tin: Tôi không còn nhận được "sửa đổi" về điều này. Để tổng hợp: Tôi không thể phát hiện khi tệp được gửi đến thùng ...
Bất kỳ ý tưởng nào về cách tôi có thể thực hiện điều đó? Có thể sử dụng một cái gì đó khác hơn FSEvents để bắt chỉ sự kiện này?
rất hữu ích, cảm ơn mã của bạn :) –
trên trang web của bạn không có nút gửi trên trang liên hệ, hãy cho tôi email của bạn, tôi muốn hỏi một số câu hỏi cho bạn. Cảm ơn :) –
Tôi đã sửa biểu mẫu liên hệ trên trang web của mình. Tôi không biết cách gửi tin nhắn riêng trên StackOverflow (hoặc thậm chí nếu có thể ^^) – Citron