B> KB"
End if
Response.Write "<P>"
End if
Next
注意,不能用预定义常数Network比较驱动器的DriveType属性,因为(至少在scrrun.dll的当前版本中)在类型库中省略了Network常数,因此不再作为公用的常数使用。
在JScript中,该程序是:
// In JScript:
// create a FileSystemObject instance
var objFSO = Server.CreateObject('Scripting.FileSystemObject');
// create a Drives collection
var colDrives = new Enumerator(objFSO.Drives);
for (; !colDrives.atEnd(); colDrives.moveNext()) {
objDrive = colDrives.item();
Response.Write('DriveLetter: ' + objDrive.DriveLetter + '<BR>');
Response.Write('DriveType: ' + objDrive.DriveType + '<BR>');
if (objDrive.DriveType == 3)
if (objDrive.IsReady)
Response.Write('Remote drive with ShareName: ' +
objDrive.ShareName + '<BR>')
else
Response.Write('Remote drive - IsReady property returned False<BR><BR>');
else if (objDrive.IsReady) {
Response.Write('Local drive with VolumeName: ' +
objDrive.VolumeName + '<BR>');
Response.Write('FileSystem: ' + objDrive.FileSystem + '<BR>');
Response.Write('SerialNumber: ' + objDrive.SerialNumber + '<BR>');
Response.Write('AvailableSpace: ' + objDrive.AvailableSpace + ' bytes<BR>');
Response.Write('FreeSpace: ' + objDrive.FreeSpace + ' bytes<BR>');
Response.Write('TotalSize: ' + objDrive.TotalSize + ' bytes<P>');
}
}
在系统上运行这段程序以前有一点要注意。如果在A驱动器里没有磁盘,或CD-ROM驱动器里没有光盘,将得到一个错误提示:“Disk Not Ready”。除了DriveLetter属性和DriveType属性外,在使用其他属性和方法前,通过检查每个驱动器的IsReady属性,可以保护该页面。
当在服务器上运行以上VBScript代码时,运行结果如图5-10所示。这一页面为drivescollection_vb.asp,来自本书提供的示例文件。
图5-10 驱动器详细列表
2. 文件系统定位
FileSystemObject的几个方法可用于得到其他对象的引用,因此可以在服务器的文件系统和任何网络驱动器中定位。事实上,在ASP代码里使用的所有对象或组件中,除了ActiveX Data Object组件,FileSystemObject对象很可能是最复杂的对象之一。
这种复杂性是由于对如何访问文件系统的不同部分,要求有极高的灵活性。例如,可以从FileSystemObject向下通过使用各种从属对象定位一个文件。其过程是从Drives集合开始,到一个Drive对象,再到驱动器的根Folder对象,然后到子Folder对象,再到文件夹的Files集合,最后到集合内的File对象。
另外,如果已知要访问的驱动器、文件夹或文件。可以直接对其使用GetDrive、GetFolder、GetSpecialFolder和GetFile方法。图5-11有助于理解所有文件系统定位相关的组件、对象、方法和属性之间的关系。
图5-11 文件系统定位关系
End if
Response.Write "<P>"
End if
Next
注意,不能用预定义常数Network比较驱动器的DriveType属性,因为(至少在scrrun.dll的当前版本中)在类型库中省略了Network常数,因此不再作为公用的常数使用。
在JScript中,该程序是:
// In JScript:
// create a FileSystemObject instance
var objFSO = Server.CreateObject('Scripting.FileSystemObject');
// create a Drives collection
var colDrives = new Enumerator(objFSO.Drives);
for (; !colDrives.atEnd(); colDrives.moveNext()) {
objDrive = colDrives.item();
Response.Write('DriveLetter: ' + objDrive.DriveLetter + '<BR>');
Response.Write('DriveType: ' + objDrive.DriveType + '<BR>');
if (objDrive.DriveType == 3)
if (objDrive.IsReady)
Response.Write('Remote drive with ShareName: ' +
objDrive.ShareName + '<BR>')
else
Response.Write('Remote drive - IsReady property returned False<BR><BR>');
else if (objDrive.IsReady) {
Response.Write('Local drive with VolumeName: ' +
objDrive.VolumeName + '<BR>');
Response.Write('FileSystem: ' + objDrive.FileSystem + '<BR>');
Response.Write('SerialNumber: ' + objDrive.SerialNumber + '<BR>');
Response.Write('AvailableSpace: ' + objDrive.AvailableSpace + ' bytes<BR>');
Response.Write('FreeSpace: ' + objDrive.FreeSpace + ' bytes<BR>');
Response.Write('TotalSize: ' + objDrive.TotalSize + ' bytes<P>');
}
}
在系统上运行这段程序以前有一点要注意。如果在A驱动器里没有磁盘,或CD-ROM驱动器里没有光盘,将得到一个错误提示:“Disk Not Ready”。除了DriveLetter属性和DriveType属性外,在使用其他属性和方法前,通过检查每个驱动器的IsReady属性,可以保护该页面。
当在服务器上运行以上VBScript代码时,运行结果如图5-10所示。这一页面为drivescollection_vb.asp,来自本书提供的示例文件。
图5-10 驱动器详细列表
2. 文件系统定位
FileSystemObject的几个方法可用于得到其他对象的引用,因此可以在服务器的文件系统和任何网络驱动器中定位。事实上,在ASP代码里使用的所有对象或组件中,除了ActiveX Data Object组件,FileSystemObject对象很可能是最复杂的对象之一。
这种复杂性是由于对如何访问文件系统的不同部分,要求有极高的灵活性。例如,可以从FileSystemObject向下通过使用各种从属对象定位一个文件。其过程是从Drives集合开始,到一个Drive对象,再到驱动器的根Folder对象,然后到子Folder对象,再到文件夹的Files集合,最后到集合内的File对象。
另外,如果已知要访问的驱动器、文件夹或文件。可以直接对其使用GetDrive、GetFolder、GetSpecialFolder和GetFile方法。图5-11有助于理解所有文件系统定位相关的组件、对象、方法和属性之间的关系。
图5-11 文件系统定位关系