您的位置:首页 > 移动开发 > IOS开发

iOS 实时监听文件夹的变化

2016-12-02 09:09 1046 查看
1.添加属性

@property (nonatomic, strong)  dispatch_source_t source;


2.开启监听

- (void)startManager {
[self startMonitorFile];
}


- (void)startMonitorFile {  //监听Document文件夹的变化
NSURL *directoryURL = [NSURL URLWithString:[SandBoxHelper docPath]]; //添加需要监听的目录
int const fd =
open([[directoryURL path] fileSystemRepresentation], O_EVTONLY);
if (fd < 0) {
NSLog(@"Unable to open the path = %@", [directoryURL path]);
return;
}
dispatch_source_t source =
dispatch_source_create(DISPATCH_SOURCE_TYPE_VNODE, fd,
DISPATCH_VNODE_WRITE,
DISPATCH_TARGET_QUEUE_DEFAULT);
dispatch_source_set_event_handler(source, ^() {
unsigned long const type = dispatch_source_get_data(source);
switch (type) {
case DISPATCH_VNODE_WRITE: {
PVRLog(@"Document目录内容发生变化!!!");
if (self.isConvenientFinished) {
self.isConvenientFinished = NO;
[self directoryDidChange];
}
break;
}
default:
break;
}
});
dispatch_source_set_cancel_handler(source, ^{
close(fd);
});
self.source = source;
dispatch_resume(self.source);
}


3.在退出的时候,注销一下

- (void)stopManager {
dispatch_cancel(self.source);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 监听文件变化