这是 Objective-C 版本的 Swift 转译。同时也受到了 这个仓库 一些启发
DirectoryWatcher
DirectoryWatcher
是一个轻量级类,使用 GCD 监控指定路径的变化。当目录发生任何变化时,DirectoryWatcher
开始轮询监控路径,确保文件传输完成后再发布通知。
安装
CocoaPods (推荐)
# For latest release in cocoapods
pod 'DirectoryWatcher'
Carthage
Carthage 是一个去中心化的依赖管理器,它会构建您的依赖并为您提供二进制框架。
您可以使用以下命令使用 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 DirectoryWatcher 集成到您的 Xcode 项目中,请指定 Cartfile
中的它
github "GianniCarlo/DirectoryWatcher" ~> 2.0.0
运行 carthage update
以构建框架,并将构建的 DirectoryWatcher.framework
拖到您的 Xcode 项目中。
Swift 包管理器
Swift 包管理器是一个用于自动化 Swift 代码分配的工具,并集成到 swift
编译器中。
一旦设置好 Swift 包,将 DirectoryWatcher 作为依赖项添加就如同将其添加到 Package.swift
的 dependencies
值一样简单。
dependencies: [
.package(url: "https://github.com/GianniCarlo/DirectoryWatcher.git", .upToNextMajor(from: "2.7.0"))
]
用法(DirectoryWatcher)
监控文档文件夹
let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let watcher = DirectoryWatcher.watch(documentsUrl)
watcher.onNewFiles = { newFiles in
// Files have been added
}
watcher.onDeletedFiles = { deletedFiles in
// Files have been deleted
}
调用 watcher.stopWatching()
和 watcher.startWatching()
以暂停/恢复。
用法(DirectoryDeepWatcher)
监控文档文件夹及其子文件夹
let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let watcher = DirectoryDeepWatcher.watch(documentsUrl)
watcher.onFolderNotification = { folder in
// New changes have happened inside one folder
// This folder could be a subfolder inside the root folder being watched
}
调用 watcher.stopWatching()
和 watcher.startWatching()
以暂停/恢复,或者调用 watcher.restartWatching()
以在层次结构发生变化的情况下丢弃旧监听器并放置新的监听器