对文件夹和驱动器进行操作

这部分介绍对文件夹和驱动器进行操作的一些方法，你将学会如何从当前服务器上接受有关驱动器的信息以及对目录的创建、删除移动和显示内容操作。

对驱动器的操作

有两个对象用来接受当地机器的驱动器信息，一个是FilsSsystemObject对象，另外一个是Drive对象。例如下面的例子会显示服务器上所有的硬盘以及它们的总大小和尚可提供的大小。

<HTML>

<HEAD><TITLE>驱动器显示列表</TITLE></HEAD>

<%

‘

创建一个FilsSystemObject对象的事例

Set MyFileObject=Server.CreateObject(

“Scripting.FileSystemObject”)

‘

对Drives集合进行循环

For Each thing in MyFileObject.Drives

%>

<BR>驱动器号：<%=thing.DriveLetter %>

<BR>驱动器总容量：<%=thing.TotalSize %>

<BR>驱动器尚可提供容量：<%=thing.AvailableSpace %>

<HR>

<%

NEXT

%>

</BODY>

</HTML>

下面是显示结果(图19.3)：

图19.3 本地计算机上的磁盘驱动器

FileSystemObject对象的Drivers集合就包括了服务器上的所有可提供的驱动器信息，不过，这指的是已经获得盘符的驱动器。

下面是FileSystemObject对象的有关驱动器的方法：

■DriveExists(DriveSpecifier).如果存在该驱动器则返回TRUE

■Drives.返回当前机器的驱动器集合

■GetDrive(DriveSpecifier).返回对应限定驱动器的Drive对象

■GetDriveName(Path).返回包含该路径的驱动器名称

另外，作为Driver对象也有自己的方法和属性来处理驱动器

■AvailableSpace.返回当前驱动器的可用空间

■DriverLetter.返回当前驱动器的盘符

■DriveType.返回当前驱动器的类型，例如是CD-ROM或者removable drive

■FreeSpace.和AvailableSpace几乎一致，用字节数返回当前可用空间大小。

注意

有说法说新的NT版本允许站长给每一个用户分配限定的硬盘空间，那样FreeSpace方法和AvailableSpace方法的显示结果就有可能有区别。

■IsReady.指示是否当前卷可以使用，这对于指示一个可擦写的驱动器的状态十分有用。

■Path.指示目前驱动器的路径

■RootFolder.这个属性会将该驱动器作为一个根目录而返回一个Folder对象

■SerialNumber.接收这个驱动器的序列号

■ShareName返回该驱动器的共享名称

■TotalSize.返回该驱动器的总容量

■VolumnName.返回代表驱动器的卷名字符串

用户在使用这些集合和方法之前，必须首先创建一个Driver对象的事例。这时你可以使用FileSystemObject对象的GetFile()方法来创建，下面这个例子脚本将返回C盘的卷名。

<%

‘

创建一个FileSystemObject对象的事例

Set MyFileObject=Server.CreateObject(

“Scripting.FileSystemObject”)

‘

创建一个Drive对象的事例

Set MyDrive=MyFileObject.GetFile(

“C:”)

Response.Write(MyDrive.VolumnName)

%>

对文件夹进行处理

这部分介绍的是操作文件夹以及显示其中的内容。你同样有两种选择，FileSystemObject对象和Folder对象，下面的例子会显示所有c:\MyFolder下面的文件

<HTML>

<HEAD><TITLE>文件夹内容</TITLE></HEAD>

<BODY>

<%

‘

创建一个FileSystemObject对象的事例

Set MyFileObject=Server.CreateObject(

“Scripting.FileSystemObject”)

‘

创建一个Folder对象

Set MyFolder=MyFileObject.GetFolder(

“c:\MyFolder”)

‘

循环显示其中文件

For Each thing in MyFolder.Files

Response.Write(

“<p>”&thing)

Next

%>

</Body>

</HTML>

这个例子中，Folder对象由FileSystemObject对象的GetFolder()方法来创建，创建后使用了For Each循环将Folder对象的Files方法中的文件显示出来：

显示结果如图19.4。

图19.4 文件夹的内容

FileSystemObject对象包括了许多种集合和方法来处理文件夹，下面是对每一种主要的使用进行分别的介绍：

■CopyFolder source, destination [,Overwrite]。这个方法用来进行文件夹的复制，你 可以使用通配符来进行多目录的复制（进行备份工作），同时，如果目的目录已经存在，可以通过将Overwrite参数设为TRUE的方法来进行覆盖。注意这里面默认值为TRUE。

■CreateFolder FolderSpecifier。创建一个指定的文件夹

■DeleteFolder FolderSpecifier。删除一个指定的文件夹

■FolderExists(FolderSpecifier). 如果该指定文件夹存在，返回True，否则返回False。

■GetFolder(FolderSpecifier). 对指定的文件夹创建一个Folder对象

■GetParentFolderName(Path).返回包含该路径的上一级目录名。

■MoveFolder source, Destinatioin。将指定目录进行移动，你可以利用通配符来移动 多个文件夹。

下面是一个典型应用的例子：

<%

‘

创建一个FileSystemObject对象的事例

Set MyFileObject=Server.CreateObject(

“Scripting.FileSystemObject”)

‘

创建一个用来操作的文件夹

MyFileObject.CreateFolder(

“C:\NewFolder”)

‘

移动该文件夹

MyFileObject.MoveFolder

“C:\NewFolder” “C:\NewFolder2”

‘

删除这个文件夹

MyFileObject.DeleteFolder

“C:\NewFolder2”

%>

下面介绍相应的Folder对象中的方法、属性。

■CopyFolder newcopy [,overwrite].将当前文件夹复制到新的位置，如果存在与目的 文件夹同名情况而且overwrite参数为False，则会报错。

■DeleteFolder.删除当前文件夹

■Files.返回所有该目录下文件的集合。其中隐含文件不显示

■IsRootFolder.如果是根目录返回True

■MoveFolder FolderSpecifier.移动当前目录到另外的位置

■name.返回当前目录名称

■ParentFolder.返回到上一级目录

■Size.显示目前目录及子目录的所有文件大小总和。

■SubFolders.返回为所有这个文件夹下面子目录的集合。

利用这些方法之前，你需要首先创建一个Folder对象的事例。下面的例子将显示所有C:\MyFolder下面的子目录。

<%

‘

创建一个FileSystemObject对象的事例

Set MyFileObject=Server.CreateObject(

“Scripting.FileSystemObject”)

‘

创建一个Folder对象

Set MyFolder=MyFileObject.GetFolder(

“c:\MyFolder”)

‘

循环显示其中子目录

For Each thing in MyFolder.Files

Response.Write(

“<p>”&thing)

Next

%>

总结

这一章相当重要，描述了各种对文件系统进行远程操作的方法，那么你就可以在任何地方利用这些对文件、文件夹以及驱动器的操作组件、方法和属性来对你的服务器进行管理，对于高级站物管理人员和站点设计人员，学会使用和控制这些操作过程是相当重要的。