Functions.Directory 方法 | |
创建一个包含目录和文件信息的数组。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION Directory(
cFileSpec AS STRING,
uAttributes AS USUAL
) AS ARRAY
public static __Array Directory(
string cFileSpec,
[DefaultParameterValueAttribute(0, 1)] __Usual uAttributes
)
查看代码参数
- cFileSpec
- 类型:String
用于搜索的文件规范。除文件名外,此规范还可以包括可选的驱动器、目录和扩展名。
文件名和扩展名可以包含标准通配符(* 和 ?)。
如果未指定驱动器和目录,将使用 Windows 默认值。
- uAttributes
- 类型:__Usual
指定在返回的信息中包含具有特殊属性的文件。
uAttributes 可以是字符串或数字。当指定为字符串时,
可以包含下表中列出的一个或多个字符。当指定为数字时,可以包含下表中
列出的一个或多个常量:
字符 | 常量 描述 |
---|
D | FA_DIRECTORY 目录 |
H | FC_HIDDEN 隐藏 |
S | FC_SYSTEM 系统 |
V | FA_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() 列出文件名:
1aDirectory := Directory("*.*", "D")
2AEval(aDirectory, {|aFile| QOut(aFile[F_NAME])})
此示例获取当前目录中所有文件的信息数组:
1aDirectory := Directory("*.*")
此示例显示与文件规范 *.PRG 匹配的每个文件的名称、大小、日期、时间和属性:
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
13
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
参见