常见 Swift 文件/文件夹/查询操作的基本封装

Furl - 基本文件 URL 操作

为什么?

我发现自己在重写通用的文件/文件夹访问/信息例程。虽然 Cocoa api 功能很强,但有时获取基本信息非常繁琐。

这是一个基本文件/文件夹和 Spotlight 查询操作的微型框架。

基本示例

// 创建一个临时文件夹来处理
let tempFolder = Folder.Temporary(create: true)

// 在文件夹中生成一个新文件,但不创建它
let workingFile = try tempFolder.file("output.txt")

// 向文件中写入一些文本
try "hello".write(to: workingFile.fileURL, atomically: true, encoding: .utf8)

// 检查我们是否是一个文件
assert(workingFile.isFile)

// 获取文件的 UTI
let uti = try workingFile.typeIdentifier()  // 应为 "public.plain-text"

// 锁定文件
workingFile.isLocked = true

// 生成一个子文件夹(注意,默认情况下不创建它)
let childFolder = try tempFolder.subFolder("child")

// 在磁盘上创建文件夹。注意,如果文件夹不存在,它将创建文件夹
try childFolder.actualize()

// 最后删除我们的临时文件夹
try tempFolder.delete()

API

位置

LocationFileFolder 的共同子单元。它包含了文件和文件夹的通用例程。

您永远不会显式创建 Location,而只会使用 FileFolder

属性

API 说明
basename 位置的名称包括扩展名
name 位置的名称不包括扩展名
displayName 位置的显示名称
extension 位置的扩展名
parent 位置所在的文件夹
state 位置的状态(folderfileunknown
exists 位置是否存在于磁盘上?
doesNotExist 位置尚未存在于磁盘上?
isFolder 这是一个现有文件夹吗?
isFile 这是一个现有文件吗?
isAlias 这是一个别名文件吗?
isSymlink 这是一个符号链接吗?
creationDate 位置的创建日期
modificationDate 位置的修改日期
isExtensionHidden 位置的扩展名是否隐藏?(读/写)
isLocked 位置是否锁定?(读/写)
attributes 位置的属性

基本权限

API 说明
isReadable 可以读取位置
isWritable 可以写入位置
isExecutable 可以执行位置
isDeletable 位置可以删除

通用类型标识