Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to monitor file change on iOS platform?

i find that there are some libraries to monitor file changes on mac,for example:https://github.com/bdkjones/VDKQueue but i failed to find a library to monitor file changes on ios platform.

could anybody tell me how to monitor file changes in objc wrapper.

thanks

like image 788
TinyMonk Avatar asked Feb 17 '14 11:02

TinyMonk


2 Answers

File monitoring on iOS is achieved by creating what GCD calls a "dispatch source" for whatever file or folder you want to monitor. When creating a dispatch source, you provide three interesting things:

  1. A file descriptor that points to the file or folder
  2. Flags to describe what kind of events you want to be notified about (file was modified, file was written to, etc.)
  3. The queue on which to send these event notifications (the main queue, a background queue, etc.)

After creating a dispatch source, you then set blocks of code to be executed when an event occurs or when the source is canceled (destroyed). In the block you set for when an event occurs, you can determine which event occurred (if you registered for more than one type), and proceed accordingly with if...else...then or switch...case statements.

I'm in the process of creating a portable Objective-C class that will simplify the process, but in the mean time, you should take a look at a demo project I've put on GitHub. It shows how exactly to do what I've described.

EDIT:

iMonitorMyFiles is now available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'iMonitorMyFiles', '~> 0.1.0'
like image 177
T Blank Avatar answered Nov 10 '22 00:11

T Blank


Have a look into `dispatch_sources' - this is a GCD based way of monitoring for example the file system: https://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/GCDWorkQueues/GCDWorkQueues.html

I am using this instead of kqueue on Mac OS and it should be available on iOS as well, according to the linked documentation.

like image 2
Volker Avatar answered Nov 09 '22 23:11

Volker