Source Code

API for accessing hierarchical file systems. Clients use Paths to obtain Resources representing files or directories.

Path contains many useful operations for manipulating paths:

value path = parsePath("/Users/Trompon/Documents");
value child = path.childPath("hello.txt");
value sibling = child.siblingPath("goodbye.txt");
value parent = path.parent;

The attribute resource of Path is used to obtain a Resource. It is usually necessary to narrow a Resource to one of the following enumerated subtypes before performing operations on it:

  • a File contains data,
  • a Directory contains other resources,
  • a Link is a symbolic link to another resource, or
  • a Nil is an unoccupied location in the filesystem where a resource may safely be created.

To create a file named hello.txt in the home directory, we could do the following:

value filePath = home.childPath("hello.txt");
if (is Nil loc = filePath.resource) {
    value file = loc.createFile();
    try (writer = file.Overwriter()) {
        writer.writeLine("Hello, World!");
    }
}
else {
    print("file already exists");
}

Note the difference between a File.Overwriter, which destroys the existing contents of the file, if any, and a File.Appender, which leaves them intact.

To print the contents of the file we just created, we could do this:

value filePath = home.childPath("hello.txt");
if (is File file = filePath.resource) {
    try (reader = file.Reader()) {
        print(reader.readLine());
    }
}
else {
    print("file does not exist");
}

Now, to rename the file:

value filePath = home.childPath("hello.txt");
if (is File file = filePath.resource) {
    value newPath = filePath.siblingPath("goodbye.txt");
    if (is Nil loc = newPath.resource) {
       file.move(loc);
    }
    else {
        print("target file already exists");
    }
}
else {
    print("source file does not exist");
}

To list the contents of a directory, we have two possibilities. We can list just the direct contents:

if (is Directory dir = home.resource) {
    for (path in dir.childPaths()) {
        print(path);
    }
}
else {
    print("directory does not exist");
}

Alternatively, we can create a Visitor that walks the whole directory tree rooted at a given path:

object visitor extends Visitor() {
    file(File file) => print(file.path);
}
home.visit(visitor);

File systems other than the default file system are supported. For example, a file system for a zip file may be created using the convenience function createZipFileSystem.

value zipPath = home.childPath("myzip.zip");
if (is Nil|File loc = zipPath.resource) {
    value zipSystem = createZipFileSystem(loc);
    value entryPath = zipSystem.parsePath("/hello.txt");
    if (is Nil entry = entryPath.resource) {
        value filePath = home.childPath("hello.txt");
        if (is File file = filePath.resource) {
            file.copy(entry);
        }
        else {
            print("source file does not exist");
        }
    }
    else {
        print("entry already exists");
    }
    zipSystem.close();
}
By: Gavin King
Packages
ceylon.file

Public API for the file system module.

Dependencies
java.base7

Public API for the file system module.

Values
currentSource Code
shared Path current

The Path representing the user current working directory.

defaultSystemSource Code
shared defaultSystem defaultSystem

A System representing the default file system.

homeSource Code
shared Path home

The Path representing the user home directory.

rootDirectoriesSource Code
shared Directory[] rootDirectories

The Directorys representing the root directories of the default file system.

See also: defaultSystem
rootPathsSource Code
shared Path[] rootPaths

The Paths representing the root directories of the default file system.

See also: defaultSystem
storesSource Code
shared Store[] stores

The Stores representing the stores of the default file system.

See also: defaultSystem
Functions
createSystemSource Code
shared System createSystem(String uriString, <String->String>[] properties)

Create a System given a URI and a sequence of named values.

Parameters:
  • uriString

    The URI, as a string.

  • properties

    A sequence of file system-specific named values.

createZipFileSystemSource Code
shared System createZipFileSystem(File|Nil file, String encoding = ...)

Create a System for accessing entries in a zip file.

Parameters:
  • file

    The zip file. If Nil, a new zip file will be automatically created.

  • encoding = "UTF-8"

    The character encoding for entry names.

parsePathSource Code
shared Path parsePath(String pathString)

Obtain a Path in the default file system given the string representation of a path.

See also: defaultSystem
parseURISource Code
shared Path parseURI(String uriString)

Obtain a Path given the string representation of a URI. The scheme determines the file system the path belongs to. The scheme file: refers to the default file system.

See also: System
sameFileSource Code
shared Boolean sameFile(File x, File y)
Interfaces
DirectorySource Code
shared Directory

Represents a directory in a hierarchical file system.

ExistingResourceSource Code

A resource that actually exists—that is one that is not Nil.

FileSource Code
shared File

Represents a file in a hierarchical file system.

Source Code
shared Link

Represents a symbolic link.

NilSource Code
shared Nil

Represents the absence of any existing file or directory at a certain path in a hierarchical file system.

PathSource Code
shared Path

Represents a path in a hierarchical file system. A path is a sequence of path elements. A path may be an absolute path that begins at the root of the file system, or a relative path.

ReaderSource Code
shared Reader

Reads lines of text from a File.

ResourceSource Code
shared Resource

Represents a file, link, or directory located at a certain path, or the absence of a file or directory at that path.

StoreSource Code
shared Store

Represents a file system store.

SystemSource Code
shared System

Represents a special-purpose file system.

WriterSource Code
shared Writer

Writes text to a File.

Classes
VisitorSource Code
shared Visitor

A file visitor.

defaultSystemSource Code

A System representing the default file system.

Exceptions
NoSuchPrincipalExceptionSource Code

Thrown if there is no principal with the specified name.