点击或拖拽改变大小

Functions.Directory 方法

X#
创建一个包含目录和文件信息的数组。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION Directory(
	cFileSpec AS STRING,
	 uAttributes AS USUAL
) AS ARRAY
查看代码

参数

cFileSpec
类型:String
用于搜索的文件规范。除文件名外,此规范还可以包括可选的驱动器、目录和扩展名。
文件名和扩展名可以包含标准通配符(* 和 ?)。
如果未指定驱动器和目录,将使用 Windows 默认值。
uAttributes
类型:__Usual
指定在返回的信息中包含具有特殊属性的文件。 uAttributes 可以是字符串或数字。当指定为字符串时, 可以包含下表中列出的一个或多个字符。当指定为数字时,可以包含下表中 列出的一个或多个常量:
字符常量 描述
DFA_DIRECTORY 目录
HFC_HIDDEN 隐藏
SFC_SYSTEM 系统
VFA_VOLUME 卷标
要指定多个常量,可以使用 + 运算符将属性相加,或使用 _Or() 运算符,例如:_Or(FC_SYSTEM, FC_HIDDEN)。
要指定多个字符串,只需将它们连接起来,例如 "SH"。
uAttributes 指定除了与 cFileSpec 匹配的任何"可见"文件之外要满足的条件。可见文件不包括目录、卷标或隐藏或系统文件 — 所有其他文件都是可见的,无论它们的读取或存档属性的状态如何。
要仅包含可见文件,请省略此参数。
注意:要仅指定卷标,排除所有其他文件,请将 FA_VOLUME 或 "V" 作为唯一的 uAttributes 参数。

返回值

类型:__Array
一个子数组的数组,每个子数组包含与 cFileSpec 匹配的每个文件的信息。
子数组元素的引用如下(见下面的示例): 与早期的 Xbase 版本相比,Directory() 的返回值已经发生了变化:
Directory() 现在返回的每个子数组都包含一些额外的值,比如创建日期和最后访问日期。 正常的 F_DATE 和 F_TIME 元素代表最后写入的日期和时间。
常量描述
F_ATTR文件属性(作为字符串)
F_DATE最后更新的日期(作为日期)
F_NAME文件名(作为字符串)
F_SIZE文件大小(作为数字)
F_TIME最后更新的时间(作为字符串)
F_WRITE_DATE最后写入文件的日期(作为日期)
F_WRITE_TIME最后写入文件的时间(作为字符串)
F_CREATION_DATE文件创建的日期(作为日期)
F_CREATION_TIME文件创建的时间(作为字符串)
F_ACCESS_DATE最后访问的日期(作为日期)
F_ACCESS_TIME最后访问的时间(作为字符串)
F_EA_SIZE.Net 文件属性
如果没有找到与 cFileSpec 匹配的文件,或者如果 cFileSpec 是非法路径或文件规范,Directory() 返回一个空数组。
备注
Directory() 返回当前或指定目录中文件的信息。您可以使用它对文件组执行操作。结合 AEval() 使用时,您可以定义一个应用于所有匹配指定 cFileSpec 的文件的代码块。
示例
此示例获取当前目录中所有文件和目录的信息数组,然后使用 AEval() 和 QOut() 列出文件名:
X#
1aDirectory := Directory("*.*", "D")
2AEval(aDirectory, {|aFile| QOut(aFile[F_NAME])})
此示例获取当前目录中所有文件的信息数组:
X#
1aDirectory := Directory("*.*")
此示例显示与文件规范 *.PRG 匹配的每个文件的名称、大小、日期、时间和属性:
X#
 1Function Start()
 2    LOCAL aDir AS ARRAY
 3    LOCAL i AS DWORD
 4    LOCAL wLen AS DWORD
 5    aDir := Directory("*.prg")
 6    wLen := ALen(aDir)
 7    FOR i := 1 UPTO wLen
 8        ? aDir[i][F_NAME], aDir[i][F_SIZE],;
 9          aDir[i][F_DATE], aDir[i][F_TIME],;
10          aDir[i][F_ATTR]
11    NEXT
12    // 除了上面的 FOR 循环外,您还可以
13    // 使用 AEval() 数组迭代器函数,如下所示:
14    AEval(aDir, {|aSub| QOut(aSub[F_NAME],;
15        aSub[F_SIZE], aSub[F_DATE], aSub[F_TIME],;
16        aSub[F_ATTR])})
17    RETURN TRUE
参见