gpt4 book ai didi

objective-c - Cocoa 监视文件的修改

转载 作者:行者123 更新时间:2023-12-03 16:23:41 25 4
gpt4 key购买 nike

我有一个特定文件的文件路径,并且我想注册以便在该文件发生更改(其内容已被修改)时收到通知。

我尝试用谷歌搜索,但找不到明确的答案。我尝试过 kqueue 和 NSWorkspace 但没有取得太大成功。

执行此操作的正确方法是什么?

谢谢!

最佳答案

感谢blog post来自 David Hamerick 的消息,我终于设法检测到文件上的任何修改:

+ (void)monitorFile:(NSString*) path {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
int fildes = open([path UTF8String], O_EVTONLY);

__block typeof(self) blockSelf = self;
__block dispatch_source_t source = dispatch_source_create(DISPATCH_SOURCE_TYPE_VNODE, fildes,
DISPATCH_VNODE_DELETE | DISPATCH_VNODE_WRITE | DISPATCH_VNODE_EXTEND |
DISPATCH_VNODE_ATTRIB | DISPATCH_VNODE_LINK | DISPATCH_VNODE_RENAME |
DISPATCH_VNODE_REVOKE, queue);
dispatch_source_set_event_handler(source, ^{
unsigned long flags = dispatch_source_get_data(source);
if(flags & DISPATCH_VNODE_DELETE)
{
dispatch_source_cancel(source);
//
// DO WHAT YOU NEED HERE
//
[blockSelf monitorFile:path];
}
});
dispatch_source_set_cancel_handler(source, ^(void) {
close(fildes);
});
dispatch_resume(source);
}

关于objective-c - Cocoa 监视文件的修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12343833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com