SKQueue

SKQueue 是一个 Swift 库,用于监控文件系统的更改。 它封装了 libc 的内核事件通知接口 kqueue 的一部分。 这意味着 SKQueue 具有非常小的占用空间,并且具有高度可扩展性,就像 kqueue 一样。

要求

要在较旧的环境中构建,只需将 Package.swift 替换为此文件

安装

Swift Package Manager

要使用 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

贡献

  1. Fork it!
  2. 创建你的特性分支: git checkout -b my-new-feature
  3. 提交你的更改: git commit -am 'Add some feature'
  4. 推送至分支: git push origin my-new-feature
  5. 提交一个 pull request :D