欢迎使用 Files,这是一个紧凑的库,提供了一种更好的处理 Swift 中的 文件 和 文件夹 的方法。它主要针对 Swift 脚本和工具,但也可在需要访问文件系统的应用程序中嵌入。它实际上是在 Foundation
提供的 FileManager
API 上的一个薄包装。
特性
- 用于访问、读取和写入文件 & 文件夹的现代化、面向对象的 API。
- 统一的、简单的
do, try, catch
错误处理。 - 轻松构建文件和文件夹的递归和平面序列。
示例
迭代文件夹中的文件
for file in try Folder(path: "MyFolder").files {
print(file.name)
}
重命名文件夹中的所有文件
try Folder(path: "MyFolder").files.enumerated().forEach { (index, file) in
try file.rename(to: file.nameWithoutExtension + "\(index)")
}
递归迭代树中的所有文件夹
Folder.home.subfolders.recursive.forEach { folder in
print("Name : \(folder.name), parent: \(folder.parent)")
}
创建、写入和删除文件和文件夹
let folder = try Folder(path: "/users/john/folder")
let file = try folder.createFile(named: "file.json")
try file.write(string: "{\"hello\": \"world\"}")
try file.delete()
try folder.delete()
将文件夹中的所有文件移动到另一个文件夹
let originFolder = try Folder(path: "/users/john/folderA")
let targetFolder = try Folder(path: "/users/john/folderB")
try originFolder.files.move(to: targetFolder)
轻松访问系统文件夹
Folder.current
Folder.root
Folder.library
Folder.temporary
Folder.home
Folder.documents
安装
Files 可以轻松用于 Swift 脚本、命令行工具或 iOS、macOS、tvOS 或 Linux 中的应用程序。
使用 Swift 包管理器(推荐)
要安装 Files 并在由 Swift 包管理器供电的工具、脚本或服务器端应用程序中使用,请在您的 Package.swift
文件中将 Files 添加为依赖项。更多详细信息,请参阅Swift 包管理器文档。
.package(url: "https://github.com/JohnSundell/Files", from: "4.0.0")
使用 CocoaPods 或 Carthage
有关如何使用这些工具添加依赖项的说明,请参阅 CocoaPods 或 Carthage 的官方文档。
作为文件
由于 Files 所有功能都实现在一个单独的文件中,因此您可以通过简单地将文件 Files.swift
拖动到 Xcode 项目中,轻松地在任何项目中使用它。
背景
那么,为什么会有这个呢?由于我已经将大部分构建工具和其他脚本从类似 Bash、Ruby 和 Python 这样的语言迁移到了 Swift,我发现自己缺少一种方便处理文件系统的简单方法。当然,FileManager
提供了一种相当不错的 API,但是由于其基于字符串的本质,它的使用相对麻烦,这使得简单的脚本开始变得相当复杂,比如移动或重命名文件。
所以我制作了 Files,以便我可以快速而表达性地处理文件和文件夹。既然我喜欢开源,我想 - 为什么不将它包装起来并与社区分享呢? :)
有疑问或反馈?
请随意提交一个问题,或在@johnsundell on Twitter上找到我。