Observe a File or Folder in Objective-C
What is the best way to listen to a folder or file to see if it has been saved or if a new file has been added?
- Converting between multiple image formats in Objective-C
- What does < > mean / represent in a class interface?
- Building a Server/Client application in Cocoa
- 'Communications error: <OS_xpc_error:' while recording video
- Building a backwards compatible OS X app, when a new API is present?
- What is a safe way to turn streamed (utf8) data into a string?
5 Solutions Collect From Internet About “Observe a File or Folder in Objective-C”
The FSEvents API is ideal if you just want to watch directories but it doesn’t handle the monitoring of individual files. Stu Connolly has a great Objective-C wrapper for the FSEvents C API, it’s called SCEvents and you can get it here:
The nice thing about FSEvents is that you just need to watch one folder and you will be notified of any changes that occur anywhere in the subfolder hierarchy of that folder.
If you need file-level notifications you will need to use kqueues. Uli Kusterer has a great Objective-C wrapper:
Either of these methods is a lot easier than wrangling with the C APIs directly, which are not particularly well documented and a bit obtuse.
If you need to support Tiger you’ll need to use kqueues as the FSEvents API wasn’t officially available in 10.4.
Try using FSEvents, although it is a C API
OS 10.5 or newer
If you are changing a file or folder, I believe the Spotlight search engine will update its database to reflect your changes.
So you might set up a thread that listens for kMDQueryDidUpdateNotification notifications through a Spotlight query specific to that file or folder.
When you get those notifications, you could fire a selector that does something you want.
If you do need to use kqueue (as discussed in other answers) Google Toolbox for Mac has a nice Objective-C wrapper that I’ve used with no issues thus far.
Not sure what’s the best way, but A way would be to fire up an NSThread that would regularly (for instance every second) check the creation dates of the files in the directory, and then have a delegate associated with that thread to perform some action when a new file has been added
- Looping using NSRange
- what do “_” and “in” mean in Swift programming language?
- application Icon Badge Number in ios5
- Apple Watch notification issue: WatchKit error – unable to find interface controller class to instantiate
- How to read push notifications from other apps in iOS
- why do i get “Must translate autoresizing mask into constraints to have _setHostsLayoutEngine:YES” in xcode 6 beta
- xcode: Using a UIImageView subclass with NSTimers
- Make Title Bar and View Controller seamless with Dark Transparency
- Auth state change listener being fired twice?
- Can the url for the “Add to home screen” on iPhone Safari be customized?
- iOS 10 bug: UICollectionView received layout attributes for a cell with an index path that does not exist
- How-to find out what causes a didHideZoomSlider error on IOS 8?
- Objective-C – Finding a URL within a string
- Where is Network link conditioner Prefpane in OSX Mountain Lion and Xcode 4.4
- Passing data received from a push notification from the AppDelegate to a ViewController