Directory Operations
Perfect brings file system operations into your sever-side Swift environments to control how data is stored and retrieved in an accessible way.
Relevant Examples
Usage
First, ensure the PerfectLib is imported in your Swift file:
import PerfectLib
You are now able to use the Dir object to query and manipulate the file system.
Setting Up a Directory Object Reference
Specify the absolute or relative path to the directory:
let thisDir = Dir("/path/to/directory/")
Checking If a Directory Exists
Use the exists method to return a Boolean value.
let thisDir = Dir("/path/to/directory/")
thisDir.exists
Returning the Current Directory Object's Name
name returns the name of the object's directory. Note that this is different from the "path".
thisDir.name
Returning the Parent Directory
parentDir returns a Dir object representing the current directory object's parent. Returns nil if there is no parent.
let thisDir = Dir("/path/to/directory/")
let parent = thisDir.parentDir
Revealing the Directory Path
path returns the path to the current directory.
let thisDir = Dir("/path/to/directory/")
let path = thisDir.path
Returning the Directory's UNIX Permissions
perms returns the UNIX style permissions for the directory as a PermissionMode object.
thisDir.perms
For example:
print(thisDir.perms) >> PermissionMode(rawValue: 29092)
Creating a Directory
create creates the directory using the provided permissions. All directories along the path will be created if needed.
The following will create a new directory with the default permissions (Owner: read-write-execute, Group and Everyone: read-execute.
let newDir = Dir("/path/to/directory/newDirectory")
try newDir.create()
To create a directory with specific permissions, specify the perms parameter:
let newDir = Dir("/path/to/directory/newDirectory")
try newDir.create(perms: [.rwxUser, .rxGroup, .rxOther])
The method throws PerfectError.FileError if an error creating the directory was encountered.
Deleting a Directory
Deleting a directory from the file system:
let newDir = Dir("/path/to/directory/newDirectory")
try newDir.delete()
The method throws PerfectError.FileError if an error deleting the directory was encountered.
Working Directories
Set the Working Directory to the Location of the Current Object
Use setAsWorkingDir to set the current working directory to the location of the object's path.
let thisDir = Dir("/path/to/directory/")
try thisDir.setAsWorkingDir()
Return the Current Working Directory
Returns a new object containing the current working directory.
let workingDir = Dir.workingDir
Reading the Directory Structure
forEachEntry enumerates the contents of the directory, passing the name of each contained element to the provided callback.
try thisDir.forEachEntry(closure: {
n in
print(n)
})