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.

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

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-exexute.

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)
})