目录与路径

Perfect为服务器端的Swift语言环境提供了一个管理文件存储的便捷方法。

首先,请在源程序代码开始部分声明PerfectLib函数库:

import PerfectLib

声明后您就随时可以使用Dir目录对象查询和操作文件系统。

设置一个目录对象参考指针

使用目录对象时,需要指定目录的绝对或相对路径:

let thisDir = Dir("/path/to/directory/")

检查目录是否存在

使用exists方法检查目录是否存在。返回结果是一个布尔值,真值表示目录存在,假值表示不存在。

let thisDir = Dir("/path/to/directory/")
thisDir.exists

返回当前目录对象的名称

调用name方法可以返回当前目录对象的名称。注意名称不是路径,二者并不相同!

thisDir.name

返回到上一级目录

调用parentDir方法可以得到当前Dir目录对象所指向上一级目录。如果不存在上一级目录,则返回nil。

let thisDir = Dir("/path/to/directory/")
let parent = thisDir.parentDir

显示当前目录对象的路径

调用path方法可以得到当前目录对象所在的路径。

let thisDir = Dir("/path/to/directory/")
let path = thisDir.path

返回当前目录的UNIX权限

调用perms方法返回UNIX风格的目录权限信息,返回值为一个PermissionMode目录权限对象

thisDir.perms

比如:

print(thisDir.perms)
>> PermissionMode(rawValue: 29092)

创建一个目录

根据用户提供的权限信息创建一个目录。沿该路径下的所有目录都会根据需要一并创建。

以下操作将采用默认权限(Owner目录所有者用户具有读、写、执行权限,用户组和其它用户具有读和执行权限)创建一个新的目录。

let newDir = Dir("/path/to/directory/newDirectory")
try newDir.create()

如果在创建目录时需要指定权限信息,请在调用前填写perms参数:

let newDir = Dir("/path/to/directory/newDirectory")
try newDir.create(perms: [.rwxUser, .rxGroup, .rxOther])

如果创建目录过程中出现错误,该方法将抛出PerfectError.FileError错误。

删除一个目录

从文件系统中删除目录的方法:

let newDir = Dir("/path/to/directory/newDirectory")
try newDir.delete()

如果在删除过程中出现错误,该方法会抛出PerfectError.FileError错误信息。

工作路径

改变当前目录对象目标指向的当前路径

请使用setAsWorkingDir来设置当前目录对象所指向的工作路径。

let thisDir = Dir("/path/to/directory/")
try thisDir.setAsWorkingDir()

返回当前工作路径

返回一个新的目录对象,内容包含当前工作路径。

let workingDir = Dir.workingDir

读取目录树结构

请以闭包为回调参数调用forEachEntry来遍历目录下的每一个节点,包括文件和子目录。

try thisDir.forEachEntry(closure: {
    n in
    print(n)
})