tango.io.FilePath
License:
BSD style: see license.txt
Version:
Oct 2004: Initial version
Version:
Nov 2006: Australian version
Version:
Feb 2007: Mutating version
Version:
Mar 2007: Folded FileProxy in
Version:
Nov 2007: VFS dictates '/' always be used
Version:
Feb 2008: Split file-system calls into a struct
Author:
Kris
FilePath 提供一个有效地编辑路径成分和访问底层文件系统的途径。
当你想徒步访问文件系统时使用模块Path.d 来代替,它不会改变路径成分。
-
void memmove(void* dst, void* src, uint bytes) [private, extern(C)] ¶#
class FilePath : PathView ¶#
- 构造文件路径模型。预计被用作各种文件类的构造参数。目的是使他们容易转换成别的表示方法如绝对形式( absolute)、标准形式( canonical)或网络地址( Url)。
- 文件路径包含非 ansi字符而用 utf-8编码。以这种方式来支持 Unicode相信比提供一个 wchar版本的 FilePath更合适,并且给 Uri类带来一致的和兼容的方法。
FilePath旨在被转换,这样每个变异方法可以修改内部的内容。在Path.d中可见到一个轻量级的不可变变种。
注:毗连的'.'分隔符形式被看作特殊的,用在把它们赋给没有明显后缀的名称时。此外,一个在名称开头的'.'预示它不是一个后缀,例如".file"是一个名称不是一个后缀。中间'.'字符的形式属于后缀,如"file....suffix"包含后缀自身的点操作符'.'。看看没有点操作符后缀的方法ext()。
注意 Win32 '\' 字符被FilePath 构造器默认地转换为 '/' 。
-
alias bool delegate (FilePath, bool) Filter [public] ¶#
- 用于通过 toList()筛查路径的过滤器。 FilePath opCall(char[] filepath = null) [static] ¶#
- 创建一个 FilePath实例的调用捷径。这使得与结构用法有相同的语法,因此揭示了一个迁移途径。 this(char[] filepath = null) ¶#
- 从提供的字符串的副本创建一个 FilePath 。
- FilePath假定可以表示路径( path)和名称( name)部分,因此可以被分离成别的符合逻辑的有效路径。也就是说,一个文件的 "name"部分是跟随在最右边路径分隔符的路径部分。意图是用相同方式对待文件和目录;作为一个名称和一个可选的祖传结构。尽可能的通过添加一个尾部路径分隔符到参数以纠偏解释。这样就会产生一个空的 name属性。
对于文件路径复制,我们发现最常见的是显式.dup,而比较起来别名使用出现得很罕见。我们也注意到与面向C的操作系统交互调用占了很大比重,这种情况下意味着一个null结束后缀。于是,FilePath把它们合并为一个简单的操作。
注意Win32 '\' 字符被正规化为 '/' 代替。
-
char[] toString() [final] ¶#
- 返回这个 filepath的完整文本。 FilePath dup() [final] ¶#
- 复制该路径。 char[] cString() [final] ¶#
- 返回该文件路径的完整文本,对于带 C api使用时以一个 null作结尾符。对于任何 D api使用 toString代替。
- 值得注意的是 nul总是嵌入 FilePath维护的字符串,所以在 C调用时没有堆开销。 char[] root() [final] ¶#
- 返回这个路径的根。根是像 "c:"这样的构造。 char[] folder() [final] ¶#
- 返回文件路径。路径可以用一个“ /”开始和结束。根路径是“ /”和未指定路径返回一个空字符串。目录路径可以被分离,目录名可以被放到“ name”成员中;目录路径可以看作与文件路径不同。 char[] parent() [final] ¶#
- 返回一个表示当前路径的上一级的路径。在名称部分为空的特殊情况下,将典型地返回当前路径部分。在以下情形,扫描前面部分的路径:
-
1 2
normal: /x/y/z => /x/y special: /x/y/ => /x
- 注意它返回适合分离成路径( path)和名称( name)部分的路径(没有尾部分隔符)。
参见pop(),当它与FilePath实例一起工作时通常会更有用。
-
char[] name() [final] ¶#
- 返回这个文件或目录的名称。 char[] ext() [final] ¶#
- ext(扩展名)是文件名的尾部,最右边“ .”分隔符的右边部分,如路径“ path.bar”的 ext是“ bar”。注意相邻的分隔符的形式被特殊对待;如“ ..”以没有 ext结束。 char[] suffix() [final] ¶#
- 后缀有点像 ext,但它包含分隔符,如路径“ foo.bar”的后缀是“ .bar”。 char[] path() [final] ¶#
- 返回 root (根) + folder(文件夹)的组合。 char[] file() [final] ¶#
- 返回 name (名字) + suffix (后缀)的组合。 int opEquals(Object o) [override, final] ¶#
- 如果所有字段都相等就返回 true。 int opEquals(char[] s) [final] ¶#
- 判断这个 FilePath与给定的文字是否相等 ? bool isAbsolute() [final] ¶#
- 如果这文件路径不是与当前工作目录相应的就返回 true。 bool isEmpty() [final] ¶#
- 如果这个 FilePath 为空就返回 true。 bool isChild() [final] ¶#
- 如果 FilePath有上一级就返回 true。 需要指出的是 ,上一级由路径中的路径分隔符的出现来定义。这意味着“ \foo”中的“ foo”被认为是根的一个孩子(下一级)。 FilePath replace(char from, char to) [final] ¶#
- 用 'to'中实体来替换 'from' 中所有的实体。 FilePath standard() [final] ¶#
- 转换路径分隔符到标准格式,使用“ /”作为路径分隔符。这将与 URI和所有 Tango支持的现代 O / S兼容。已知的例外包括 Windows命令行处理器,它把“ /”作为一个开关。使用 native()方法来支持。
注:会改变当前路径。
注:会改变当前路径。可以使用这种模式来获得一份副本:path.dup.native。
-
FilePath cat(char[][] others...) [final] ¶#
- 连接文字到这个路径;没有分隔符被添加。也可看看 join() FilePath append(char[] path) [final] ¶#
- 附加一个文件夹到这个路径。根据需要添加一个前导分隔符。 FilePath prepend(char[] path) [final] ¶#
- 在当前路径前面追加一个文件夹。如果需要的话添加一个后续分隔符。 FilePath set(FilePath path) ¶#
- 重置当前路径的内容到另一个路径并且后果新解析。 FilePath set(char[] path, bool convert = false) [final] ¶#
- 重置这个路径的内容,并重新解析。在解析前,有一个任选的布尔标志可以把路径转换成标准形式(转换“ \”成“ /”)。 FilePath isFolder(bool folder) [final] ¶#
- 为已知是文件夹的路径避开了正常的查找。如果文件夹为 true,文件系统查找将会跳过它。 FilePath root(char[] other) [final] ¶#
- 更换这个路径的根部分。 FilePath folder(char[] other) [final] ¶#
- 替换这个路径的文件夹部分。这个文件夹将根据需要用路径分隔符填补。 FilePath name(char[] other) [final] ¶#
- 替换这个路径的名字部分。 FilePath suffix(char[] other) [final] ¶#
- 替换这个路径的后缀部分。该后缀将会根据需要在前面放一个文件分隔符。 FilePath path(char[] other) [final] ¶#
- 替换这个路径的根和文件夹部分并重新解析。替换者会根据需要用一个路径分隔符填补。 FilePath file(char[] other) [final] ¶#
- 替换这个路径的文件和后缀部分并重新解析。代替者根据需要前置一个后缀分隔符。 FilePath pop() [final] ¶#
- 弹出当前文件路径的上一级(在原位改变这个 FilePath)。 char[] join(char[][] paths...) [static] ¶#
- 把一系列路径结合起来。一个路径分隔符被潜在地插入到每个段中。 FilePath absolute(char[] prefix) [final] ¶# 把这个 转换成绝对格式,必须时使用给定前缀。如果这个 已经是绝对的,就原封不动地返回它。
-
char[] stripped(char[] path, char c = FileConst.PathSeparatorChar) [static] ¶#
- 返回一个调整过的路径,如没有结尾分隔符的非空实例这样的情形。 char[] padded(char[] path, char c = FileConst.PathSeparatorChar) [static] ¶#
- 返回一个调整过的路径,在总是有结尾分隔符的非空实例情形下。 char[] prefixed(char[] s, char c = FileConst.PathSeparatorChar) [static] ¶#
- 返回一个调整过的路径,在非空实例总是有一个分隔符前缀的情形。 FilePath parse() [private, final] ¶#
- 解析路径的规格,必要时改变 '\'成 '/'。 void expand(uint size) [private, final] ¶#
- 潜在地可更多内容腾出地方来。 int adjust(int head, int tail, int len, char[] sub) [private, final] ¶#
- 插入 /删除内部的内容。 FilePath create() [final] ¶#
- 文件系统方法
注意,每个部分被当做文件夹创建,包括结尾部分。
返回:
- 一个连锁引用 (this)
抛出:
- 系统错误时抛出 IOException 异常。
抛出: