File
File 对象允许您读取和写入磁盘上的文件(或 Zip 文件、FTP 站点等)中的二进制数据。虽然 Microsoft Scripting.FileSystemObject 对象允许您读取和写入文件,但它只支持文本,不支持二进制数据。您还可以使用 File 对象修改文件的属性和时间戳。
您可以使用 FSUtil.OpenFile 和 Item.Open 方法获取 File 对象。您可以以三种模式之一打开文件:
读取模式 - 您可以在 Read 方法的帮助下从文件中读取数据。您不能写入它或修改它的属性。
写入模式 - 您可以在 Write 方法的帮助下向文件写入数据,并且您也可以修改文件的属性。您不能从中读取数据。
修改模式 - 您可以在 Read 方法的帮助下从文件中读取数据。您不能写入它或修改它的属性。
<默认值>
字符串
返回文件的完整路径名。
error
int
返回一个 Win32 错误代码,指示上次操作的成功或失败。如果前一次操作成功,通常为 0。
例如,如果您尝试使用 FSUtil.OpenFile 打开一个不存在的文件以进行读取,则将返回一个有效的 File 对象 - 但文件本身不会打开。您可以在继续使用 File 对象之前检查 error 是否返回 0。
方法名称
参数
返回类型
描述
Close
无
无
关闭底层文件句柄。在此调用之后,File 对象仍然有效,但它不能再读取或写入数据。
如果您想使用 SetAttr 方法修改您创建的文件的属性,您可能想要先调用 Close,否则文件系统将在您想要设置或不想要设置的情况下在文件上设置 A(压缩包)属性。
如果您想删除文件,您可能还想手动关闭文件,因为一些脚本语言(例如 JScript)具有延迟垃圾回收,否则可能会比您预期的更长时间保持文件句柄打开。
Read
<blob:target> <int:size>
int 或 对象:Blob
从文件读取数据。如果您提供一个 target Blob 作为第一个参数,数据将存储在该 Blob 中。否则,将自动创建一个 Blob。 可选的 size 参数指定要读取的字节数 - 默认行为是读取文件的剩余内容。 每次调用最多可以读取 1 GB(1073741824 字节),无论是否指定或隐式指定大小。要读取更大的文件,您必须多次调用 Read。 如果您提供一个 Blob,则返回值表示从文件成功读取的字节数。如果没有提供 Blob,则返回值是自动创建的 Blob - 您可以使用它的 size 属性来发现读取的字节数。 如果 Read 返回零(或空 Blob),您可以使用 error 属性测试是否出现错误,或者文件是否 simply had no more data.
Seek
<int:delta> <string:method>
对象:FileSize
移动此文件内的读写光标。delta 参数指定要移动的字节数 - 如何解释它取决于可选的 method 参数:
b - 相对于文件开头移动 e - 相对于文件结尾移动 c - 相对于当前位置移动(这是默认方法)
返回值是一个 FileSize 对象,指示新的光标位置。
SetAttr
对象:FileAttr 或 <string:attributes>
bool
修改此文件的属性。您可以传递一个表示要设置的属性的字符串,或者传递一个 FileAttr 对象。使用字符串时,有效的属性为:
a - 压缩包 c - 压缩 e - 加密 h - 隐藏 n - 正常 r - 只读 s - 系统 p - 固定 i - 非内容索引
请注意,c 和 e 属性不能同时设置。
当您传递字符串时,您还可以使用 + 和 - 来打开或关闭某些属性,而不会影响其它属性。例如,SetAttr("-r") 将关闭只读属性。
返回值为 True,如果操作成功。
SetTime
<date:modify> <date:create> <date:access>
bool
修改一个或多个文件的时间戳。create 和 access 参数是可选的。如果您希望指定一个时间戳没有变化,请指定 0。
时间戳指定为本地时间 - 使用 SetTimeUTC 将它们指定为 UTC。
返回值为 True,如果操作成功。
SetTimeUTC
<date:modify> <date:create> <date:access>
bool
修改一个或多个文件的时间戳。create 和 access 参数是可选的。如果您希望指定一个时间戳没有变化,请指定 0。
时间戳指定为 UTC 时间 - 使用 SetTime 将它们指定为本地时间。
返回值为 True,如果操作成功。
Truncate
无
bool
在写入光标的当前位置截断文件。您可以将此与 Seek 方法结合使用,以在磁盘上预分配文件的空间,从而提高性能(即,寻求文件的最终大小,在该点截断,然后返回到起点并写入数据)。
返回值为 True,如果操作成功。
Write
<blob:source> 或 <string:source> <int:from> <int:size>
int
将指定 Blob(或数组)或 string 中的数据写入文件。 默认情况下,将写入 Blob 的所有内容,但您可以使用可选的 from 参数指定源字节偏移量,使用 size 参数指定要写入的字节数。 每次调用最多可以写入 1 GB(1073741824 字节),无论是否指定或隐式指定大小。要写入更大的数据量,您必须多次调用 Write。 如果您提供 string 而不是 Blob,则该字符串将自动编码为 UTF-8。 返回值表示成功写入文件的字节数。 如果 Write 返回零,您可以使用 error 属性测试是否出现错误,或者是否 simply had no data to write(例如,指定的 Blob 为空)。
最后更新于