SKQueue 是一个 Swift 库,用于监控文件系统的更改。 它封装了 libc 的内核事件通知接口 kqueue 的一部分。 这意味着 SKQueue 具有非常小的占用空间,并且具有高度可扩展性,就像 kqueue 一样。
要在较旧的环境中构建,只需将 Package.swift 替换为此文件。
要使用 SKQueue,请将以下代码添加到 Package.swift 中的 dependencies。 然后运行 swift package fetch 来获取 SKQueue。
.package(url: "https://github.com/daniel-pedersen/SKQueue.git", from: "1.2.0"),
要使用 SKQueue 监控文件系统,首先需要一个可以接收通知的 SKQueueDelegate 实例。 然后可以使用 addPath 添加要监视的路径,如下例所示。
import SKQueue
class SomeClass: SKQueueDelegate {
func receivedNotification(_ notification: SKQueueNotification, path: String, queue: SKQueue) {
print("\(notification.toStrings().map { $0.rawValue }) @ \(path)")
}
}
let delegate = SomeClass()
let queue = SKQueue(delegate: delegate)!
queue.addPath("/Users/steve/Documents")
queue.addPath("/Users/steve/Documents/dog.jpg")
| 操作 | 示例输出 |
|---|---|
在 /Users/steve/Documents 中添加或删除文件 |
["Write"] @ /Users/steve/Documents |
在 /Users/steve/Documents 中添加或删除目录 |
["Write", "SizeIncrease"] @ /Users/steve/Documents |
写入文件 /Users/steve/Documents/dog.jpg |
["Rename", "SizeIncrease"] @ /Users/steve/Documents/dog.jpg |
git checkout -b my-new-featuregit commit -am 'Add some feature'git push origin my-new-feature