常见 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
位置
Location
是 File
和 Folder
的共同子单元。它包含了文件和文件夹的通用例程。
您永远不会显式创建 Location
,而只会使用 File
和 Folder
。
属性
API | 说明 |
---|---|
basename |
位置的名称包括扩展名 |
name |
位置的名称不包括扩展名 |
displayName |
位置的显示名称 |
extension |
位置的扩展名 |
parent |
位置所在的文件夹 |
state |
位置的状态(folder 、file 、unknown ) |
exists |
位置是否存在于磁盘上? |
doesNotExist |
位置尚未存在于磁盘上? |
isFolder |
这是一个现有文件夹吗? |
isFile |
这是一个现有文件吗? |
isAlias |
这是一个别名文件吗? |
isSymlink |
这是一个符号链接吗? |
creationDate |
位置的创建日期 |
modificationDate |
位置的修改日期 |
isExtensionHidden |
位置的扩展名是否隐藏?(读/写) |
isLocked |
位置是否锁定?(读/写) |
attributes |
位置的属性 |
基本权限
API | 说明 |
---|---|
isReadable |
可以读取位置 |
isWritable |
可以写入位置 |
isExecutable |
可以执行位置 |
isDeletable |
位置可以删除 |