`

tango.io.Path 翻译

阅读更多

tango.io.Path( r4774)

License:

BSD style: see license.txt

Version:

Mar 2008: Initial version

Author:

Kris

FilePath更直接到达文件系统。如果你不需要路径的编辑特性就使用它。例如,你只想检查某些路径是否存在,使用这个模块也许比FilePath更方便。例如:

1
2
if (exists ("some/file/path")) 
    ...

这些函数也许比FilePath效率更小,因为他们通常为每次底层操作系统调用附加一个空指针(null)。当你需要徒步访问文件系统,并且不操作路径的部件时,使用Path。如果希望得到路径的编辑和改变特征就用FilePath

  

  我们鼓励使用“范围导入”使用这个模块中,例如:

1
2
3
4
import Path = tango.io.Path;

if (Path.exists ("some/file/path")) 
    ...

也可以在这里放一个轻量级的路径解析器,把文件路径分离成它们的组成成分。看看下面的路径解析器(PathParser):

1
2
3
4
5
6
auto p = Path.parse ("some/file/path");
auto path = p.path;
auto name = p.name;
auto suffix = p.suffix;
...
...

编译时带上 -version=Win32SansUnicode参数获得 Win95 & Win32s 的文件支持。

struct FS [package] #

用一个D API包装操作系统特有调用。值得注意的是它们接受一个null(仅在终止字符串),这就是为什么它不是公共的。我们需要首先做这个声明以避免前向引用问题。

struct Stamps #
时间戳信息。精确到文件系统(the F/S支持的最大精度。
Time created #
Time accessed #
Time modified #

最后修改时间。

struct FileInfo #

文件扫描期间传递来的文件信息。

struct Listing #
Some fruct glue for directory listings
void exception(char[] filename) [static] #

使用最后已知错误抛出一个异常。

void exception(char[] prefix, char[] error) [static] #

抛出IO 异常。

char[] padded(char[] path, char c = '/') [static] #

返回一个调整为总是有一个结尾分隔符非空实例的路径。

char[] stripped(char[] path, char c = '/') [static] #

返回一个调整为没有结尾分隔符的非空实例的路径。

char[] join(char[][] paths...) [static] #

把一些路径细则合并到一起。一个路径分隔符会潜在地插入到每个部分之间。

char[] strz(char[] src, char[] dst) [static] #

可能的话廉价地附加一个终止null到一个字符串。

wchar[] toString16(wchar[] tmp, char[] path) [private, static] #

返回一个该路径的wchar[] 实例。

char[] toString(char[] tmp, wchar[] path) [private, static] #

返回一个该路径的char[] 实例。

bool fileInfo(char[] name, inout WIN32_FILE_ATTRIBUTE_DATA info) [private, static] #

获取这个路径有关这个路径的信息。

DWORD getInfo(char[] name, inout WIN32_FILE_ATTRIBUTE_DATA info) [private, static] #

获取有关这个路径的信息。

DWORD getFlags(char[] name) [private, static] #

为这个路径取得一个标志。

bool exists(char[] name) [static] #
返回指定的文件或路径是否存在?
ulong fileSize(char[] name) [static] #

返回文件长度(用字节)。


bool isWritable(char[] name) [static] #

这个文件是否可写?

bool isFolder(char[] name) [static] #

判断它实际上是不是一个文件夹/目录?

bool isFile(char[] name) [static] #

是否是一个正常文件?

Stamps timeStamps(char[] name) [static] #

返回时间戳信息。

时间戳用文件系统指示的格式返回。如NTFS保持UTC时间,而FAT时间戳是基于本地时间。

void copy(char[] src, char[] dst) [static] #

传递另一个文件的内容到这个文件中。成功时返回到这个类的引用 ,失败则抛出一个IOException

void remove(char[] name) [static] #

从文件系统中稳除文件/目录。

void rename(char[] src, char[] dst) [static] #

改变一个文件/目录的名称或位置,并采用提供的路径。

void createFile(char[] name) [static] #

创建一个新文件。

void createFolder(char[] name) [static] #

创建一个新文件夹。

int list(char[] folder, int delegate(ref FileInfo) dg) [static] #

列举在这个文件夹中的文件名集合。

每个路径和文件名被传递到提供的委托,和前置路径一起并且不管入口是否是一个文件夹。

返回扫描到的文件数目。


struct PathParser #

解析文件路径。

文件路径包含非ansi字符应该是utf-8编码。以这种方式来支持Unicode相信比提供wchar版本的路径解析器(PathParser)更合适,并且与Uri类看起来一致和相兼容。

:毗连的'.'分隔符形式被看作特殊的,用在把它们赋给没有明显后缀的名称时。此外,一个在名称开头的'.'预示它不是一个后缀,例如".file"是一个名称不是一个后缀。中间'.'字符的形式属于后缀,如"file....suffix"包含后缀自身的点操作符'.'。看看没有点操作符后缀的方法ext()

也要注意路径分隔符的正规化没有默认发生。这就意味着 '\'的用法要显式地预先转换为 '/'(在'\'出现的情形会抛出一个异常)。在运行中(On-the-fly )转换被避免,因为提供的路径被认为不可变并且我们避免制造一个原始路径的副本。模块FilePath在一个更高层次上存在,没有这样的限制。


PathParser parse(char[] path) #

解析路径细则。

PathParser dup() #

复制这个路径。

char[] toString() #

返回这个文件路径的完整文字。

char[] root() #

返回这个路径的根。根是形如C:”的结构。

char[] folder() #

返回文件路径。路径可以用"/"开始和结束。根路径是"/"且未指定的路径返回一个空字符串。目录路径可以被分隔,目录名放'name'成员中;目录名被看作与文件路径不同。

char[] parent() #

返回一个表示这当前的上一级的路径。如果名字部分为空的特殊情况下,这将典型地返回当前路径部分。在这样的情况下,路径扫描前面的部分:

1
2
normal:  /x/y/z => /x/y
special: /x/y/  => /x

注意,这会返回一个适合于分离成路径和名字部分的路径(没有尾部分隔符)。


char[] name() #

返回这个文件或目录的名字。

char[] ext() #

扩展名(ext)是文件名的尾部,最右边'.'分隔符的右边,如路径"foo.bar"的扩展名(ext)是"bar"。注意相邻两个分隔符的形式被特殊看待,例如".."会以没有扩展名( ext)而结束。

char[] suffix() #

后缀(suffix)很象扩展名(ext),但包含分隔符,如路径"foo.bar"的后缀是".bar"

char[] path() #

返回根(root +文件夹( folder)的组合。

char[] file() #

返回名字(name +后缀( suffix)的组合。

bool isAbsolute() #

如果这个路径与当前工作目录不相对应就返回true

bool isEmpty() #

如果文件路径为空就返回true

bool isChild() #
如果这个路径有上一级(父)就返回true。需要指出的是,“上一级”(父)由在路径中有路径分隔符出现来定义。这就意味在"/foo"中的'foo'是根的下一级(子)。
int opEquals(char[] s) #
判断这个路径与给定的文字是否相等吗?
PathParser parse(char[] path, size_t end) [package] #
分析路径细则和明确的终点。一个路径中的' \ '被认为是非法的。
bool exists(char[] name) #
判断这个路径当前是否存在?
Time modified(char[] name) #
返回最后修改时间。精确到文件系统(F/S)支持的最高精度,使用文件系统指出的格式。例如NTFS保持UTC时间,而FAT时间戳则基于本地时间。
Time accessed(char[] name) #
返回最后访问时间。精确到文件系统(F/S)支持的最高精度,使用文件系统指出的格式。例如NTFS保持UTC时间,而FAT时间戳则基于本地时间。
Time created(char[] name) #
返回文件创建时间。精确到文件系统(F/S)支持的最高精度,使用文件系统指出的格式。例如NTFS保持UTC时间,而FAT时间戳则基于本地时间。
ulong fileSize(char[] name) #
返回文件长度(用字节)。
bool isWritable(char[] name) #
判断这个文件是否可写?
bool isFolder(char[] name) #
它实际上是否是一个文件夹/目录?
bool isFile(char[] name) #
判断这个文件实际上是否是一个正常文件?不是一个目录或(在uninx)一个设备文件或链接。
FS.Stamps timeStamps(char[] name) #
返回时间戳信息。
时间戳按羽翼文葳蕤系统指明的格式返回。例如返回最后修改时间。精确到文件系统(F/S)支持的最高精度,使用文件系统指出的格式。例如NTFS保持UTC时间,而FAT时间戳则基于本地时间。
void remove(char[] name) #
从文件系统中移除该文件/目录。
void createFile(char[] name) #
创建一个新文件。
void createFolder(char[] name) #
创建一个新目录。
void createPath(char[] path) #
创建一个由这个文件夹和它的所有上层文件夹组成的完整路径。路径不能包含'.''..'成分。相关方法包含在 PathUtil.normalize()FilePath.absolute()中。
注意,每个部分被创建为一个文件夹,包括末尾部分。

抛出:

在系统错误时抛出IOException

如果一个部分以一个文件形式存在而不是文件夹形式存在时抛出IllegalArgumentException (非法参数异常)。
void rename(char[] src, char[] dst) #
改变一个文件/目录的名称或位置。
void copy(char[] src, char[] dst) #
转移一个文件的内容到另一个中。失败时抛出IOException IO异常)。
FS.Listing children(char[] path) #
通过一个fruct提供foreach支持。
1
2
foreach (info; children("myfolder"))
         ...
每个路径与文件名被传递到foreach委托,和路径前缀一起而不管入口是不是一个文件夹。信息结构(info construct)揭示了下面的特征:
1
2
3
4
char[]  path
char[]  name
ulong   bytes
bool    folder
char[] join(char[][] paths...) #
把一系列路径细则结合到一起。一个路径分隔符被潜在地插入到每个部分之间。
char[] standard(char[] path) #
转换路径分隔符到标准格式,使用'/' 作为路径分隔符。这将与Uri和所用Tango支持的当代操作系统兼容。已知的异常是Windows命令行处理器,它把'/'字符当作开关。使用
分享到:
评论

相关推荐

    tango-controls.pdf

    Tango Control System是一种用于控制和监控实验室仪器、望远镜、粒子加速器等复杂设备的控制系统。该系统被广泛应用于科研与工业领域,特别是在物联网及系统集成方面扮演着重要角色。 在搭建Tango Control System时...

    Windows安装TANGO教程.docx

    ### Windows安装TANGO教程知识点详解 #### 一、前言 本教程旨在详细介绍如何在Windows 10操作系统上搭建TANGO环境。TANGO是一种广泛应用于分布式控制系统的框架,尤其适用于科学仪器与工业自动化领域的应用。本文将...

    TangoTagger:Clojure 库,用于根据来自 tango.info 网站的数据自动标记探戈歌曲

    探戈标签Clojure 库,用于根据来自 tango.info 网站的数据自动标记探戈歌曲。执照版权所有 :copyright: 2014 Bruno Alfirević 根据 Eclipse 公共许可证分发 1.0 版或(由您选择)任何更高版本。

    谈客视频电话 Tango v3.13.128111

    谈客视频电话 Tango v3.13.128111 更新时间:2015-01-14 版本:3.13.128111 软件语言:多语言 软件类别:网络语音 软件大小:26.18 MB 适用固件:2.1及更高固件 内置广告:没有广告 适用平台:Android Tango为您...

    Tango视频电话 v3.13.127894

    Tango视频电话3.13.127894 Tango Video Calls 大小:26.18MB 更新时间:2015-01-12 Tango为您带来免费的高品质视频通话,在3G和Wi-Fi网络上都运行如飞!全世界数百万用户都在使用妙趣横生又简单易用的Tango视频...

    学习D语言的tango:第三章 D的面向对象特性

    例如,`tango.io.File`类提供了对文件的基本操作,而`tango.container.List`类则实现了动态列表。这些类通常设计为易于使用且灵活,同时支持模板(templates),使你能以类型安全的方式处理各种数据。 在实际编程中...

    tango, 微型&可以插入网络框架.zip

    tango, 微型&可以插入网络框架 Tango 软件包探戈是一个微型&可以插入的网页框架。当前版本:v0.5.0 版本的历史记录。正在启动要安装 Tango:go get github.com/lunny/tango

    PyPI 官网下载 | django-tango-0.3.1.tar.gz

    标题"PyPI 官网下载 | django-tango-0.3.1.tar.gz"表明这是一个从Python Package Index (PyPI)官方源下载的软件包,名为"django-tango",版本号为0.3.1,其格式是tar.gz。PyPI是Python社区中最主要的第三方软件库...

    authz:移动了https

    身份验证 authz是的授权中间件,它基于 。 安装 ...简单的例子 package main import ( ... tg := tango .... HandlerFunc ( func ( ctx * tango. Context ) { sess := sessions . Session ( ctx . Req ()

    tango-colors:探戈颜色定义用于python,乳胶和其他..

    如果要在乳胶文档中使用这些探戈颜色,请将tango.sty放在某个可以找到乳胶的地方。 例如,在texmf目录中。 Python 您有两种使用颜色的方法。 如果只需要HTML模型,则可以导入TANGO_HTML_COLORS ,这是探戈颜色的...

    Python库 | tango-comments-0.4.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:tango-comments-0.4.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Tango-D2:Tango库到D2的端口

    现在,这意味着基本上所有用户模块(tango.math.BigNum除外,别名为std.bigint,直到另行通知)和大多数tango.core模块都已移植。 doc / examples文件夹中的示例也应该起作用。 我在Linux上进行移植,因此这是经过...

    flume-redis:Flume-Redis添加了源和接收器功能以支持Apache Flume中的Redis

    agent.sources.redisSource.type = com.tango.logstash.flume.redis.source.RedisSource agent.sources.redisSource.host = localhost agent.sources.redisSource.key = logstash agent.sources.redisSource.batch_...

    Python库 | tango-articles-0.12.1.tar.gz

    《Python库:tango-articles-0.12.1.tar.gz详解》 在Python的世界里,库扮演着至关重要的角色,它们为开发者提供了丰富的功能,简化了代码编写过程。今天我们将聚焦于一个名为“tango-articles”的库,其版本为...

    manual-zh-CN:Tango使用指南 Moved to https

    Tango Tango 是一个微内核易扩展的Go语言Web框架,他兼有Beego的效率和Martini的中间件设计。 最近更新 ... tango.JSON } func (Action) Get() interface{} { if true { return map[string]string{

    tango风格的XP主题

    “TANGO的最爱”可能意味着这个主题是对Tango设计风格的一种致敬或特别优化,是Tango风格的忠实体现,因此深受Tango风格爱好者的喜欢。 【标签解析】 “tango”标签直接关联了设计风格,指明了主题的视觉特征。...

    TangoSDK_Eisa_Unity5.unitypackage

    TangoSDK_Eisa_Unity5.unitypackage

    tango:一个基于React的WordPress主题原型

    将探戈存储git clone git@github.com:kwight/tango.git到您的wp-content/themes/文件夹中: git clone git@github.com:kwight/tango.git cd进入新的Tango主题,然后运行npm install 。 运行npm run build来创建...

    电路设计软件tango

    《Tango:电路设计软件的历史与应用》 Tango,这款被誉为古老的电路板设计软件,是电子工程领域中的一颗璀璨明星。它以其强大的功能和在DOS操作系统下的独特运行方式,为电路设计者提供了丰富的工具,使得在早期的...

    Tango助手-crx插件

    语言:English,中文 (简体) 自动提取bugly页面的日志数据,并以可读性更高的UI形式展现 自动提取bugly页面的日志数据,并自动弹窗显示;支持多种显示日志方式:1. 自动弹窗提醒;可通过设置,取消自动弹窗提醒(默认...

Global site tag (gtag.js) - Google Analytics