我的應用程序將一些文件放入垃圾箱,但也實現撤消將它們拉回。我需要知道用戶是否清空垃圾,以便清空我的撤消堆棧。當用戶清空垃圾箱時,我的Cocoa應用程序如何得到通知?
我是否需要監視文件系統事件以實現此目的,還是有更簡單的方法?
我的應用程序將一些文件放入垃圾箱,但也實現撤消將它們拉回。我需要知道用戶是否清空垃圾,以便清空我的撤消堆棧。當用戶清空垃圾箱時,我的Cocoa應用程序如何得到通知?
我是否需要監視文件系統事件以實現此目的,還是有更簡單的方法?
您可能不得不最終看到〜/ .Trash,但是垃圾被清空時發佈的通知。它的名字是"com.apple.carbon.core.DirectoryNotification"
(在其他時候也發佈),但它在userInfo中似乎沒有任何內容。但是,它確實有一個字符串作爲對象,因此可能包含一些相關信息。我的快速測試似乎表明它沒有。 (它看起來像一個字符串,類似於"FNObject 555279-101"
)
另一種選擇是使用FNSubscribe
或FNSubscribeByPath
。通知不會完全告訴您發生了什麼,只是您訂閱的目錄發生了一些情況。
您可以使用UKKQueue看文件更改(空鞭打)通知:
http://www.cocoadev.com/index.pl?UKKQueue
感謝。我在https://github.com/erica/GrabUpper/blob/master/grabupper.m找到了一個使用它的例子。一旦我知道可以進行更改,我可以檢查垃圾箱是否有空,並做出適當的迴應。 – 2011-03-21 02:56:34
還要注意垃圾不僅在'〜/ .Trash';外部驅動器上的文件被移至'/ path/to/mountpoint/Trashes/uid /'。 – Yuji 2011-06-02 04:34:52