FileSystemObject
示例代码
在本节描述的示例代码,提供真实的例子来示范在 FileSystemObject 对象模式中可用的许多功能。该代码显示了如何一起使用对象模式的所有功能,以及如何在您自己的代码中有效地使用这些功能。请注意,由于该代码是极一般的,所以要使该代码能够真正在您的机器上运行,可能需要一些其他代码和小小的变更。这些改变之所以必要,是因为在 Active Server Pages 和 Windows Scripting Host 之间,为输入和输出给用户采用了不同的方法。
要在 Active Server Pages 上运行该代码,则采取以下步骤:
- 创建一个标准的 Web 页,后缀名为 .asp。
- 把下面的示例代码复制到 <BODY>...</BODY> 标记之间的文件中。
- 把所有代码包装器到 <%...%> 标记内。
- 把 Option Explicit 语句从当前位置移动到 HTML 页的最顶部,甚至在 <HTML> 开始标记前。
- 把 <%...%> 标记放置在 Option Explicit 语句周围,以保证它在服务器端运行。
- 把下面的代码添加到示例代码末尾:
Sub Print(x) Response.Write "<PRE><FONT face=" 宋体"" SIZE=""1"">" Response.Write x Response.Write "</FONT></PRE>" End Sub Main前面的代码增加一个将在服务器端运行,但在客户端显示结果的打印过程。要在 Windows Scripting Host 上运行该代码,则把下面的代码添加到示例代码的末尾:Sub Print(x) WScript.Echo x End Sub Main
下面就是示例代码:
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ ´ ´ FileSystemObject 示例代码 ´ ´Copyright 1998 Microsoft Corporation。保留所有权利。 ´ ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ Option Explicit ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ ´ ´ 对于代码质量: ´ ´ 1) 下面的代码有许多字符串操作,用"&"运算符来把短字符串连接在一起。由于 ´ 字符串连接是费时的,所以这是一种低效率的写代码方法。无论如何,它是 ´ 一种非常好维护的写代码方法,并且在这儿使用了这种方法,因为该程序执行 ´ 大量的磁盘操作,而磁盘操作比连接字符串所需的内存操作要慢得多。 ´ 记住这是示范代码,而不是产品代码。 ´ ´ 2) 使用了 "Option Explicit",因为访问声明过的变量,比访问未声明的变量要 ´ 稍微快一些。它还能阻止在代码中发生错误,例如,把 DriveTypeCDROM 误拼 ´ 成了 DriveTypeCDORM 。 ´ ´ 3) 为了使代码更可读,该代码中没有错误处理。虽然采取了防范措施,来保证代码 ´ 在普通情况下没有错误,但文件系统是不可预知的。在产品代码中,使用 ´ On Error Resume Next 和 Err 对象来捕获可能发生的错误。 ´ ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ ´ ´ 一些容易取得的全局变量 ´ ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ Dim TabStop Dim NewLine Const TestDrive = "C" Const TestFilePath = "C:\Test" ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ ´ ´ 由 Drive.DriveType 返回的常数 ´ ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ Const DriveTypeRemovable = 1 Const DriveTypeFixed = 2 Const DriveTypeNetwork = 3 Const DriveTypeCDROM = 4 Const DriveTypeRAMDisk = 5 ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ ´ ´ 由 File.Attributes 返回的常数 ´ ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ Const FileAttrNormal = 0 Const FileAttrReadOnly = 1 Const FileAttrHidden = 2 Const FileAttrSystem = 4 Const FileAttrVolume = 8 Const FileAttrDirectory = 16 Const FileAttrArchive = 32 Const FileAttrAlias = 64 Const FileAttrCompressed = 128 ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ ´ ´ 用来打开文件的常数 ´ ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ Const OpenFileForReading = 1 Const OpenFileForWriting = 2 Const OpenFileForAppending = 8 ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ ´ ´ ShowDriveType ´ ´ 目的: ´ ´ 生成一个字符串,来描述给定 Drive 对象的驱动器类型。 ´ ´ 示范下面的内容 ´ ´ - Drive.DriveType ´ ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ Function ShowDriveType(Drive) Dim S Select Case Drive.DriveType Case DriveTypeRemovable S = "Removable" Case DriveTypeFixed S = "Fixed" Case DriveTypeNetwork S = "Network" Case DriveTypeCDROM S = "CD-ROM" Case DriveTypeRAMDisk S = "RAM Disk" Case Else S = "Unknown" End Select ShowDriveType = S End Function ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ ´ ´ ShowFileAttr ´ ´ 目的: ´ ´ 生成一个字符串,来描述文件或文件夹的属性。 ´ ´ 示范下面的内容 ´ ´ - File.Attributes ´ - Folder.Attributes ´ ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ Function ShowFileAttr(File) ´ File 可以是文件或文件夹 Dim S Dim Attr Attr = File.Attributes If Attr = 0 Then ShowFileAttr = "Normal" Exit Function End If If Attr And FileAttrDirectory Then S = S & "Directory " If Attr And FileAttrReadOnly Then S = S & "Read-Only " If Attr And FileAttrHidden Then S = S & "Hidden " If Attr And FileAttrSystem Then S = S & "System " If Attr And FileAttrVolume Then S = S & "Volume " If Attr And FileAttrArchive Then S = S & "Archive " If Attr And FileAttrAlias Then S = S & "Alias " If Attr And FileAttrCompressed Then S = S & "Compressed " ShowFileAttr = S End Function ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ ´ ´ GenerateDriveInformation ´ ´ 目的: ´ ´ 生成一个字符串,来描述可用驱动器的当前状态。 ´ ´ 示范下面的内容 ´ ´ - FileSystemObject.Drives ´ - Iterating the Drives collection ´ - Drives.Count ´ - Drive.AvailableSpace ´ - Drive.DriveLetter ´ - Drive.DriveType ´ - Drive.FileSystem ´ - Drive.FreeSpace ´ - Drive.IsReady ´ - Drive.Path ´ - Drive.SerialNumber ´ - Drive.ShareName ´ - Drive.TotalSize ´ - Drive.VolumeName ´ ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´ 相信这个例子已经含盖了大部分的FSO的应用,大家可以根据这个例子来修改,得到自己想要的功能,期待和大家交流:)cpplus