path library

A comprehensive, cross-platform path manipulation library.

The path library was designed to be imported with a prefix, though you don't have to if you don't want to:

import 'package:path/path.dart' as p;

The most common way to use the library is through the top-level functions. These manipulate path strings based on your current working directory and the path style (POSIX, Windows, or URLs) of the host platform. For example:

p.join('directory', 'file.txt');

This calls the top-level join function to join "directory" and "file.txt" using the current platform's directory separator.

If you want to work with paths for a specific platform regardless of the underlying platform that the program is running on, you can create a Context and give it an explicit Style:

var context = p.Context(style: Style.windows);
context.join('directory', 'file.txt');

This will join "directory" and "file.txt" using the Windows path separator, even when the program is run on a POSIX machine.

Classes

Context
An instantiable class for manipulating paths. Unlike the top-level functions, this lets you explicitly select what platform the paths will use.
PathMap<V>
A map whose keys are paths, compared using p.equals and p.hash.
PathSet
A set containing paths, compared using p.equals and p.hash.
Style
An enum type describing a "flavor" of path.

Properties

context → Context
The system path context.
final
current → String
Gets the path to the current working directory.
no setter
posix → Context
A default context for manipulating POSIX paths.
final
separator → String
Gets the path separator for the current platform. This is \ on Windows and / on other platforms (including the browser).
no setter
style → Style
Returns the Style of the current context.
no setter
url → Context
A default context for manipulating URLs.
final
windows → Context
A default context for manipulating Windows paths.
final

Functions

absolute(String part1, [String? part2, String? part3, String? part4, String? part5, String? part6, String? part7, String? part8, String? part9, String? part10, String? part11, String? part12, String? part13, String? part14, String? part15]) → String
Returns a new path with the given path parts appended to current.
basename(String path) → String
Gets the part of path after the last separator.
basenameWithoutExtension(String path) → String
Gets the part of path after the last separator, and without any trailing file extension.
canonicalize(String path) → String
Canonicalizes path.
dirname(String path) → String
Gets the part of path before the last separator.
equals(String path1, String path2) → bool
Returns true if path1 points to the same location as path2, and false otherwise.
extension(String path, [int level = 1]) → String
Gets the file extension of path: the portion of basename from the last . to the end (including the . itself).
fromUri(Object? uri) → String
Returns the path represented by uri, which may be a String or a Uri.
hash(String path) → int
Returns a hash code for path such that, if equals returns true for two paths, their hash codes are the same.
isAbsolute(String path) → bool
Returns true if path is an absolute path and false if it is a relative path.
isRelative(String path) → bool
Returns true if path is a relative path and false if it is absolute. On POSIX systems, absolute paths start with a / (forward slash). On Windows, an absolute path starts with \\, or a drive letter followed by :/ or :\.
isRootRelative(String path) → bool
Returns true if path is a root-relative path and false if it's not.
isWithin(String parent, String child) → bool
Returns true if child is a path beneath parent, and false otherwise.
join(String part1, [String? part2, String? part3, String? part4, String? part5, String? part6, String? part7, String? part8, String? part9, String? part10, String? part11, String? part12, String? part13, String? part14, String? part15, String? part16]) → String
Joins the given path parts into a single path using the current platform's separator. Example:
joinAll(Iterable<String> parts) → String
Joins the given path parts into a single path using the current platform's separator. Example:
normalize(String path) → String
Normalizes path, simplifying it by handling .., and ., and removing redundant path separators whenever possible.
prettyUri(Object? uri) → String
Returns a terse, human-readable representation of uri.
relative(String path, {String? from}) → String
Attempts to convert path to an equivalent relative path from the current directory.
rootPrefix(String path) → String
Returns the root of path, if it's absolute, or the empty string if it's relative.
setExtension(String path, String extension) → String
Returns path with the trailing extension set to extension.
split(String path) → List<String>
Splits path into its components using the current platform's separator.
toUri(String path) → Uri
Returns the URI that represents path.
withoutExtension(String path) → String
Removes a trailing extension from the last part of path.

Exceptions / Errors

PathException
An exception class that's thrown when a path operation is unable to be computed accurately.