Easy way to work with files, directories and paths in swift on macOS and linux.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Sources/FileUtils
Tests
.gitignore
.travis.yml
LICENCE
Package.swift
Readme.md

Readme.md

FileUtils

Build Status codecov Platform Language: Swift Carthage

Easy way to work with files, directories and paths in swift on macOS and linux.

Why?

You are developing a cli and you want to:

  • Read/Write files.
  • Create/Delete files.
  • Create/Delete/List directories.
  • Get different paths (Home/Current/Temp).
  • Get the base name and directory name of a path

You can use FileUtils with Guaka to create aweseome command line applications.

Note: At the moment, this library only deals with textual files contents. (Check todo section of this file).

Usage

File

Create a file

File(path: path, fileMode: .write)

// or
File.create(path: path)

Delete a file

File.delete(atPath: path)

Read file content

let content = File.read(atPath: path)

// or
let content = String.read(contentsOfFile: path)

Write file content

File.write(string: "ABCDEF", toPath: path, )

// or
"AAAAA".write(toFile: path)

Check if file exists

File.exists(path)

Path

Get temporary file and directory

let tmp = Path.tempPath

// or
let tmp = Path.tempFile

// or
let tmp = Path.tempFileName(withName: "abc.txt")

Get the current directory

let path = Path.currentDirectory

Get the home directory

let path = Path.home

Check if the path exists

let exists = Path.exists(path)

Check the type of the file at a path

let type = Path.type(ofPath: path)

type is a member of the PathType enum. This enum defines directory, executable, link and file

Expand a tilde in the path

let expanded = Path.expand("~/Documents")
// expanded is "/Users/YourUser/Documents"

Get the base name and the directory name of a path

let base = Path.baseName(forPath: "/Documents/this/is/mypath")
// base is "mypath"

let dir = Path.dirName(forPath: "/Documents/this/is/mypath")
// dir is "/Documents/this/is"

Directory

Create a directory

Directory.create(atPath: path)

Delete a directory

Directory.delete(atPath: path)

Enumerate contents of a directory

let (files, directories) = Directory.contents(ofDirectory: path)!

this returns a tuple that contains all the files and directories found at the path

Installation

You can install File using Swift package manager (SPM) and Carthage

Swift Package Manager

Add FileSystem as a dependency in your Package.swift

  import PackageDescription

  let package = Package(name: "YourPackage",
    dependencies: [
      .Package(url: "https://github.com/getGuaka/FileUtils.git", majorVersion: 0),
    ]
  )

Carthage

github "getGuaka/FileUtils"

Tests

Tests can be found here.

Run them with

swift test

Todo

  • Handle non textual files contents

Contributing

Just send a PR! We don't bite ;)