ChrootFileSystem class

File system that provides a view into another FileSystem via a path.

This is similar in concept to the chroot operation in Linux operating systems. Such a modified file system cannot name or access files outside of the designated directory tree.

Example use:

// Create a "file system" where the root directory is /tmp/some-dir.
var fs = ChrootFileSystem(existingFileSystem, '/tmp/some-dir');

Notes on usage:

  • This file system maintains its own currentDirectory, distinct from that of the underlying file system, and new instances automatically start at the root (i.e. /).

  • This file system does not leverage any underlying OS system calls (such as chroot itself), so the developer needs to take care to not assume any more of a secure environment than is actually provided. For instance, the underlying system is available via the delegate - which underscores this file system is intended to be a convenient abstraction, not a security measure.

  • This file system necessarily carries certain performance overhead due to the fact that symbolic links are resolved manually (not delegated).

Inheritance

Constructors

ChrootFileSystem(FileSystem delegate, String root)
Creates a new file system backed by root path in delegate file system.

Properties

currentDirectory ↔ Directory
Creates a directory object pointing to the current working directory.
getter/setter pairoverride
delegate → FileSystem
Underlying file system.
final
hashCode → int
The hash code for this object.
no setterinherited
isWatchSupported → bool
Tests if FileSystemEntity.watch is supported on the current system.
no setteroverride
path → Context
An object for manipulating paths in this file system.
no setteroverride
root → String
Directory in delegate file system that is treated as the root here.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
systemTempDirectory → Directory
Gets the system temp directory. This directory will be created on-demand in the local root of the file system. Once created, its location is fixed for the life of the process.
no setteroverride

Methods

directory(dynamic path) → Directory
Returns a reference to a Directory at path.
override
file(dynamic path) → File
Returns a reference to a File at path.
override
getPath(dynamic path) → String
Gets the string path represented by the specified generic path.
inherited
identical(String path1, String path2) → Future<bool>
Checks whether two paths refer to the same object in the file system. Returns a Future<bool> that completes with the result.
override
identicalSync(String path1, String path2) → bool
Synchronously checks whether two paths refer to the same object in the file system.
override
isDirectory(String path) → Future<bool>
Checks if type(path) returns io.FileSystemEntityType.DIRECTORY.
inherited
isDirectorySync(String path) → bool
Synchronously checks if type(path) returns io.FileSystemEntityType.DIRECTORY.
inherited
isFile(String path) → Future<bool>
Checks if type(path) returns io.FileSystemEntityType.FILE.
inherited
isFileSync(String path) → bool
Synchronously checks if type(path) returns io.FileSystemEntityType.FILE.
inherited
Checks if type(path) returns io.FileSystemEntityType.LINK.
inherited
isLinkSync(String path) → bool
Synchronously checks if type(path) returns io.FileSystemEntityType.LINK.
inherited
Returns a reference to a Link at path.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
stat(String path) → Future<FileStat>
Asynchronously calls the operating system's stat() function on path. Returns a Future which completes with a io.FileStat object containing the data returned by stat(). If the call fails, completes the future with a io.FileStat object with .type set to FileSystemEntityType.NOT_FOUND and the other fields invalid.
override
statSync(String path) → FileStat
Calls the operating system's stat() function on path. Returns a io.FileStat object containing the data returned by stat(). If the call fails, returns a io.FileStat object with .type set to FileSystemEntityType.NOT_FOUND and the other fields invalid.
override
toString() → String
A string representation of this object.
inherited
type(String path, {bool followLinks = true}) → Future<FileSystemEntityType>
Finds the type of file system object that a path points to. Returns a Future
override
typeSync(String path, {bool followLinks = true}) → FileSystemEntityType
Syncronously finds the type of file system object that a path points to. Returns a io.FileSystemEntityType.
override

Operators

operator ==(Object other) → bool
The equality operator.
inherited