Encapsulate path and file names.
pure nothrow this(const char[]
str);
static pure nothrow FileName
create(const(char)*
name);
static pure nothrow @nogc bool
equals(const(char)*
name1, const(char)*
name2);
static pure nothrow @nogc bool
equals(const char[]
name1, const char[]
name2);
Compare two name according to the platform's rules (case sensitive or not)
static pure nothrow @nogc bool
absolute(const(char)*
name);
static pure nothrow @nogc @safe bool
absolute(const char[]
name);
Determine if path is absolute.
Returns:true if absolute path name.
static nothrow const(char)*
toAbsolute(const(char)*
name, const(char)*
base = null);
Return the given name as an absolute path
Parameters:const(char)*name | path |
const(char)*base | the absolute base to prefix name with if it is relative |
Returns:name as an absolute path relative to base
static pure nothrow @nogc const(char)*
ext(const(char)*
str);
static pure nothrow @nogc @safe const(char)[]
ext(const char[]
str);
Determine file name extension as slice of input.
Returns:filename extension (read-only). Points past '.' of extension. If there isn't one, return null.
static nothrow const(char)*
removeExt(const(char)*
str);
static nothrow const(char)[]
removeExt(const char[]
str);
Return file name without extension.
TODOOnce slice are used everywhere and\0 is not assumed, this can be turned into a simple slicing.
Returns:mem.xmalloc'd filename with extension removed.
static nothrow @safe const(char)[]
sansExt(const char[]
filename);
Slice of file name without extension.
static pure nothrow @nogc const(char)*
name(const(char)*
str);
static pure nothrow @nogc @safe const(char)[]
name(const char[]
str);
Return filename name excluding path (read-only).
static nothrow const(char)*
path(const(char)*
str);
static nothrow const(char)[]
path(const char[]
str);
Return path portion of str. returned string is newly allocated Path does not include trailing path separator.
static nothrow const(char)[]
replaceName(const char[]
path, const char[]
name);
Replace filename portion of path.
static nothrow const(char)*
combine(const(char)*
path, const(char)*
name);
static nothrow const(char)[]
combine(const char[]
path, const char[]
name);
Combine apath and a filename
Parameters:const(char)*path | Path to append to |
const(char)*name | Name to append to path |
Returns:The\0 terminated string which is the combination ofpath andname and a valid path.
static nothrow void
appendSplitPath(const(char)*
path, ref Strings
array);
Splits a delimiter-separated path string (e.g., from an environment variable likePATH) into individual path fragments and appends them to the given array.
This is a convenience wrapper aroundsplitPath that collects all fragments into anArray!(const(char)*).
Parameters:const(char)*path | A null-terminated string containing path fragments separated by platform-specific delimiters. |
Stringsarray | The array to which each extracted fragment will be appended. |
static nothrow void
splitPath(scope int delegate(const(char)*) nothrow
sink, const(char)*
path);
Split path (such as that returned bygetenv("PATH")) into pieces, each piece is mem.xmalloc'd Handle double quotes and ~. Pass the pieces to sink()
Parameters:int delegate(const(char)*) nothrowsink | send the path pieces here, end when sink() returns !=0 |
const(char)*path | the path to split up. |
static pure nothrow char[]
addExt(const char[]
name, const char[]
ext);
Add the extensionext toname, regardless of the content ofname
Parameters:char[]name | Path to append the extension to |
char[]ext | Extension to add (should not include '.') |
Returns:A newly allocated string (free withFileName.free)
static pure nothrow const(char)*
defaultExt(const(char)*
name, const(char)*
ext);
static pure nothrow const(char)[]
defaultExt(const char[]
name, const char[]
ext);
Free returned value with FileName::free()
static pure nothrow const(char)*
forceExt(const(char)*
name, const(char)*
ext);
static pure nothrow const(char)[]
forceExt(const char[]
name, const char[]
ext);
Free returned value with FileName::free()
static pure nothrow @nogc bool
equalsExt(const(char)*
name, const(char)*
ext);
static pure nothrow @nogc bool
equalsExt(const char[]
name, const char[]
ext);
Returns:true ifname's extension isext
pure nothrow @nogc bool
equalsExt(const(char)*
ext) const;
Return !=0 if extensions match.
static nothrow const(char)*
searchPath(ref const Strings
path, const(char)*
name, bool
cwd);
Search paths for file.
Parameters:Stringspath | array of path strings |
const(char)*name | file to look for |
boolcwd | true means search current directory before searching path |
Returns:if found, filename combined with path, otherwise null
static pure nothrow @nogc @safe size_t
findReservedChar(const char[]
name);
Determine if path contains reserved character.
Returns:index of the first reserved character in path if found, size_t.max otherwise
static pure nothrow @nogc @safe bool
refersToParentDir(const char[]
name);
Determine if path has a reference to parent directory.
Returns:true if path contains '..' reference to parent directory
static nothrow int
exists(const(char)*
name);
static nothrow int
exists(const char[]
name);
Check if the file thepath points to exists
Returns:0 if it does not exists 1 if it exists and is not a directory 2 if it exists and is a directory
static nothrow bool
ensurePathExists(const char[]
path);
static nothrow bool
ensurePathExists(const(char)*
path);
Ensure that the provided path exists
Accepts a path to either a file or a directory. In the former case, the basepath (path to the containing directory) will be checked for existence, and created if it does not exists. In the later case, the directory pointed to will be checked for existence and created if needed.
Parameters:char[]path | a path to a file or a directory |
Returns:true if the directory exists or was successfully created
static nothrow const(char)*
canonicalName(const(char)*
name);
static nothrow const(char)[]
canonicalName(const char[]
name);
Return canonical version of name. This code is high risk.
static pure nothrow void
free(const(char)*
str);
Free memory allocated by FileName routines