Skip to content

FileSystem模块

FileSystem模块将用于处理磁盘文件和目录的过程和语句组合在一起。其成员可分为两类:基于路径名的操作,作用于文件系统中命名的对象(创建和删除文件与目录、查询属性、遍历目录列表),以及基于文件号的操作,作用于先前由Open语句返回的句柄(读取、定位、格式化和跟踪通道)。

导航目录

ChDrive更改当前驱动器,ChDir更改指定驱动器上的当前目录,CurDir返回当前驱动器的路径——如果指定了其他驱动器,则返回该驱动器的路径。MkDirRmDir分别创建和删除目录。

vb
ChDrive "D"
ChDir "D:\Projects"
Debug.Print CurDir              ' "D:\Projects"
MkDir "D:\Projects\Output"

检查文件和目录

Dir是通配符匹配器:传入包含*?的路径名,它返回第一个匹配的名称,然后不带参数再次调用可遍历后续匹配项,直到返回""FileLen无需打开文件即可返回文件大小(字节),FileDateTime返回最后修改时间戳。GetAttrSetAttr读取和写入VbFileAttribute标志位——只读、隐藏、系统、存档——GetAttr还通过设置vbDirectory位来报告名称是否指向目录。

vb
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删除匹配通配符模式的文件。两者都通过路径名操作,当要求对当前进程已打开的文件执行操作时会引发运行时错误。

vb
FileCopy "C:\Data\report.xlsx", "C:\Backup\report.xlsx"
Kill "C:\Backup\*.tmp"

打开和跟踪文件号

较低层的读/写语句——OpenCloseGetPutPrintWriteInputLine Input——使用1--511范围内的文件号进行操作。FreeFile返回当前未使用的下一个文件号,使调用者无需手动选择并与其他代码竞争。文件打开后,FileAttr报告文件号打开时的访问模式——InputOutputRandomAppendBinaryReset关闭所有当前打开的文件号并刷新其缓冲区,在退出前作为最后的清理最为有用。

vb
Dim N As Long
N = FreeFile
Open "C:\Data\report.txt" For Input As #N
' ... read ...
Close #N

打开文件中的位置

对于打开的文件号,EOF在顺序读取超过最后一条记录后返回TrueLOF返回文件的总长度(字节),Loc返回当前读/写位置。位置的单位取决于打开模式——Random模式为记录号,Binary模式为字节偏移量,顺序模式为字节位置除以128——因此每个函数页面上的按模式说明表是权威参考。Seek兼具函数和语句的功能:函数返回下一次读或写的位置(而Loc报告上一次的位置),语句在下一次操作前重新定位文件指针。

vb
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

通过文件号读取和格式化

InputInput$从以Open语句打开的文件号中读取固定数量的字符,分别返回VariantStringInputBInputB$是它们的面向字节版本,计算原始字节数而非UTF-16字符数。它们与**Input #**语句的不同之处在于,它们返回读取到的每个字符——逗号、换行符、引号、前导空格等——当磁盘上的字节不是逗号分隔值的流时,它们是正确的选择。

Width设置顺序输出通道上的输出行宽:后续的**Print #**在写入指定数量的字符后换行,当Width0时则永不换行。

成员

  • 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 -- 设置顺序输出文件的行宽

twinBASIC及其LOGO版权为作者"韦恩"所有