FileSystem模块
FileSystem模块将用于处理磁盘文件和目录的过程和语句组合在一起。其成员可分为两类:基于路径名的操作,作用于文件系统中命名的对象(创建和删除文件与目录、查询属性、遍历目录列表),以及基于文件号的操作,作用于先前由Open语句返回的句柄(读取、定位、格式化和跟踪通道)。
导航目录
ChDrive更改当前驱动器,ChDir更改指定驱动器上的当前目录,CurDir返回当前驱动器的路径——如果指定了其他驱动器,则返回该驱动器的路径。MkDir和RmDir分别创建和删除目录。
ChDrive "D"
ChDir "D:\Projects"
Debug.Print CurDir ' "D:\Projects"
MkDir "D:\Projects\Output"检查文件和目录
Dir是通配符匹配器:传入包含*或?的路径名,它返回第一个匹配的名称,然后不带参数再次调用可遍历后续匹配项,直到返回""。FileLen无需打开文件即可返回文件大小(字节),FileDateTime返回最后修改时间戳。GetAttr和SetAttr读取和写入VbFileAttribute标志位——只读、隐藏、系统、存档——GetAttr还通过设置vbDirectory位来报告名称是否指向目录。
Dim Name As String
Name = Dir("C:\Logs\*.log")
Do While Name <> ""
Debug.Print Name & vbTab & FileLen("C:\Logs\" & Name)
Name = Dir
Loop复制和删除
FileCopy将一个文件复制到另一个文件,Kill删除匹配通配符模式的文件。两者都通过路径名操作,当要求对当前进程已打开的文件执行操作时会引发运行时错误。
FileCopy "C:\Data\report.xlsx", "C:\Backup\report.xlsx"
Kill "C:\Backup\*.tmp"打开和跟踪文件号
较低层的读/写语句——Open、Close、Get、Put、Print、Write、Input和Line Input——使用1--511范围内的文件号进行操作。FreeFile返回当前未使用的下一个文件号,使调用者无需手动选择并与其他代码竞争。文件打开后,FileAttr报告文件号打开时的访问模式——Input、Output、Random、Append或Binary。Reset关闭所有当前打开的文件号并刷新其缓冲区,在退出前作为最后的清理最为有用。
Dim N As Long
N = FreeFile
Open "C:\Data\report.txt" For Input As #N
' ... read ...
Close #N打开文件中的位置
对于打开的文件号,EOF在顺序读取超过最后一条记录后返回True,LOF返回文件的总长度(字节),Loc返回当前读/写位置。位置的单位取决于打开模式——Random模式为记录号,Binary模式为字节偏移量,顺序模式为字节位置除以128——因此每个函数页面上的按模式说明表是权威参考。Seek兼具函数和语句的功能:函数返回下一次读或写的位置(而Loc报告上一次的位置),语句在下一次操作前重新定位文件指针。
Dim N As Long, Line As String
N = FreeFile
Open "C:\Data\big.log" For Input As #N
Do While Not EOF(N)
Line Input #N, Line
Loop
Close #N通过文件号读取和格式化
Input和Input$从以Open语句打开的文件号中读取固定数量的字符,分别返回Variant和String;InputB和InputB$是它们的面向字节版本,计算原始字节数而非UTF-16字符数。它们与**Input #**语句的不同之处在于,它们返回读取到的每个字符——逗号、换行符、引号、前导空格等——当磁盘上的字节不是逗号分隔值的流时,它们是正确的选择。
Width设置顺序输出通道上的输出行宽:后续的**Print #**在写入指定数量的字符后换行,当Width为0时则永不换行。
成员
- ChDir -- 更改当前目录或文件夹
- ChDrive -- 更改当前驱动器
- CurDir -- 返回当前路径
- Dir -- 返回与模式匹配的文件、目录、文件夹或卷标的名称
- EOF -- 返回是否已到达以Random或顺序Input模式打开的文件末尾
- FileAttr -- 返回以Open语句打开的文件模式
- FileCopy -- 复制文件
- FileDateTime -- 返回文件创建或最后修改的日期和时间
- FileLen -- 返回文件的字节长度
- FreeFile -- 返回Open语句可用的下一个文件号
- GetAttr -- 返回文件或目录的属性
- Input, Input$ -- 从打开的顺序文件中读取固定数量的字符
- InputB, InputB$ -- 从打开的顺序文件中读取固定数量的字节
- Kill -- 从磁盘删除文件
- Loc -- 返回打开文件中当前的读/写位置
- LOF -- 返回打开文件的大小(字节)
- MkDir -- 创建新目录或文件夹
- Reset -- 关闭所有以Open语句打开的磁盘文件
- RmDir -- 删除现有目录或文件夹
- Seek -- 返回或设置打开文件中的读/写位置
- SetAttr -- 设置文件的属性信息
- Width -- 设置顺序输出文件的行宽