美文网首页OC进化iOSiOS Developer
iOS 实时监听文件夹的变化

iOS 实时监听文件夹的变化

作者: 南城同學 | 来源:发表于2016-11-30 15:29 被阅读97次

    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开发:iTunes导入本地视频(文件共享)》步骤4. 中有写到,有兴趣可以看一下

      本文标题:iOS 实时监听文件夹的变化

      本文链接:https://www.haomeiwen.com/subject/rtdtmttx.html