“Files”

BuddyBuild CocoaPods Carthage Swift Package Manager Twitter: @johnsundell

欢迎使用 Files,这是一个紧凑的库,它提供了一种更友好的方式来处理 Swift 中的文件文件夹。它主要面向 Swift 脚本和工具,但也可以嵌入到需要访问文件系统的应用程序中。它本质上是 Foundation 提供的 FileManager API 的一个轻量级封装。

特性

示例

迭代文件夹中包含的文件

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("{\"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 Package Manager (推荐)

要安装 Files 以用于 Swift Package Manager 驱动的工具、脚本或服务器端应用程序,请将 Files 作为依赖项添加到您的 Package.swift 文件中。有关更多信息,请参阅 Swift Package Manager 文档

.package(url: "https://github.com/JohnSundell/Files", from: "4.0.0")

使用 CocoaPods 或 Carthage

有关如何使用这些工具添加依赖项的说明,请参阅 CocoaPodsCarthage 的文档。

作为文件

由于 Files 的所有实现都在单个文件中,因此您可以通过简单地将 Files.swift 文件拖到您的 Xcode 项目中,轻松地在任何项目中使用它。

背景故事

那么,为什么要制作这个库呢?随着我将大部分构建工具和其他脚本从 Bash、Ruby 和 Python 等语言迁移到 Swift,我发现自己缺少一种处理文件系统的简单方法。当然,FileManager 有一个非常不错的 API,但由于其基于字符串的性质,使用起来可能相当麻烦,这使得移动或重命名文件的简单脚本很快变得非常复杂。

所以,我制作了 Files,使我能够以一种富有表现力的方式快速处理文件和文件夹。而且,因为我热爱开源,所以我想 - 为什么不把它打包起来与社区分享呢?:)

问题或反馈?

欢迎 提出问题,或在 Twitter 上 @johnsundell 找到我。