`
zhaohaolin
  • 浏览: 1018207 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ASP 3.0高级编程(二十)

阅读更多
 来    源: 互联网
 作    者: 不祥
 发表日期: 2005-12-17 16:53:23
 阅读次数: 81
 文章标题:ASP → ASP 3.0高级编程(二十)
 查看权限: 普通文章
 查看方式: 查看:[ 大字 中字 小字 ] [双击滚屏]
 正    文:
ASP 3.0高级编程(二十)
5.4.1 FileSystemObject对象成员概要
       FileSystemObject对象提供一个属性和一系列方法,可用它们来操纵FileSystemObject对象实现的一些从属对象。这里提供了全部的内容概要,然后介绍每一个从属对象。
1.  FileSystemObject的属性
FileSystemObject对象只有一个属性,它用于得到当前机器上的所有有效驱动器的列表,如表5-4所示:
表5-4  FileSystemObject对象的属性及说明
属 性
说 明

Drivers
返回本地计算机可用的驱动器列表。

2.  FileSystemObject的方法
FileSystemObject对象提供了使用从属对象的一系列方法,从属对象包括Drive、Folder和File等对象。它也实现了用于TextStream对象的两个方法:CreateTextFile和OpenTextFile。根据所使用的对象的类型,将方法划分为三类。
(1)    与驱动器有关的方法
与驱动器有关的方法如表5-5所示:
表5-5 与驱动器有关的方法及说明
方 法
说 明

DriveExists(drivespec)
如果在drivespec中指定的驱动器存在,则返回True,否则返回False。drivespec参数可以是一个驱动器字母,或者是文件、文件夹的完整绝对路径

GetDrive(drivespec)
返回drivespec指定的驱动器所对应的Drive对象。drivespec可以包含冒号、路径分隔符或者是网络共享名,即:“C”、“C:”、“C:\”及“\\machine\sharename”

GetDriveName(drivespec)
用字符串返回drivespec指定的驱动器的名称。drivespec参数必须是文件或文件夹的绝对路径,或者仅仅是驱动器字母,例如:“c:”或“c”

(2)    与文件夹有关的方法
与文件夹有关的方法如表5-6所示:
表5-6  与文件夹有关的方法及说明
方 法
说 明

BuildPath(path,name)
在已有的路径path上增添名字为name的文件或文件夹,如果需要,则增添路径分隔符’\’

CopyFolder(source,destination,overwrite)
从指定的源文件夹source(可以包含通配符)中复制一个或多个文件夹到指定的目标文件夹destination,包含了源文件夹中的所有文件。如果source包含通配符或destination末尾是路径分隔符(‘\’),那么认为destination是要放置源文件夹的拷贝的文件夹。否则的话,认为destination是要创建的新文件夹的路径名。如果destination文件夹已经存在且overwrite参数设置为False,将产生错误,缺省的overwrite参数是True

CreateFolder(foldername)
创建一个路径名为foldername的文件夹。如果foldername已经存在将产生错误

DeleteFolder(folderspec,force)
删除由folderspec指定的一个或多个文件夹(可以在路径的最后部分包含通过配符)及文件夹中的所有内容。如果可选的force参数设置为true,那么即使文件夹包含的文件具有只读属性,也将删除该文件夹。缺省的force参数是False

FolderExist(folderspec)
如果folderspec指定的文件夹存在则返回True,否则返回False。folderspec参数可以包含文件夹的绝对或相对路径,或者仅仅是当前文件夹中看到的文件夹名

GetAbsolutePathName(pathspec)
返回明确指定文件夹的路径,其中要考虑到当前文件夹的路径。例如,如果当前文件夹是“c:\docs\sales\”,而pathspec是“jan”,返回的字符是“c:\docs\sales\jan”。通配符、”..”和”\\”路径操作符都是可以接受的

GetFolder(folderspec)
返回folderspec指定的文件夹对应的Folder对象。folderspec可以是文件夹的相对的或绝对的路径

GetParentFolderName(pathspec)
返回pathspec文件或文件夹的上一级文件夹。不检验该文件夹是否存在

GetSpecialfolder(folderspec)
返回一个特定的Windows文件夹相对应的Folder对象。参数folderspec的允许值是WindowsFolder(0)、SystemFolder(1)和TemporaryFolder(2)

MoveFolder(source,destination)
将source指定的一个或多个文件夹移动到destination指定的文件夹。在source里可以包含通配符,但在destination中不行。如果source包含通配符或destination末尾是路径分隔符(‘\’),则认为destination是要放置源文件夹的文件夹,否则认为它是一个新文件夹的完整路径和名字。如果目的文件夹destination已经存在则产生错误

(3)    与文件有关的方法
与文件有关的方法如表5-7所示:
方 法
说 明

CopyFile(source,destination,
overwrite)
将source(可包含通配符)指定的一个或多个文件复制到指定的目标文件夹destination。如果source包含通配符或destination末尾是路径分隔符(‘\’),那么认为destination是文件夹。否则认为destination为一新文件的完全路径和名称。如果目标文件夹已经存在且overwrite参数设置为False,将产生错误。缺省的overwrite参数是True

CreateTextFile(filename,overwrite,
unicode)
用指定的文件名filename在磁盘上创建一个新的文本文件,并返回与其对应的TextStream对象,如果可选的overwrite参数设置为True,则覆盖同一路径下已有的同名文件。缺省的overwrite参数是False。如果可选的unicode参数设置为True,则该文件的内容将存储为Unicode文本,缺省的unicode参数是False

DeleFile(filespec,force)
删除由filespec指定的一个或多个文件(可以在路径的最后部分包含通配符)。如果可选的force参数设置为true,那么也删除具有只读属性的文件。缺省的force参数是False

FileExists(filespec)
如果filespec指定的文件存在则返回True,否则返回False。filespec参数可以包含文件的绝对路径或相对路径,或者是当前文件夹中的文件名

GetBaseName(filespec)
返回filespec指定的文件的名称,即包含文件路径但去掉了文件的扩展名

GetExtensionName(filespec)
返回filespec指定的文件的扩展名

GetFile(filespec)
返回filespec指定的文件所对应的File对象。可以指定文件的相对或绝对路径

GetFileName(pathspec)
返回pathspec指定的文件的路径或文件名,如果没有文件名就返回最后的文件夹名。不检查该文件或文件夹是否存在

GetTempName()
返回一个随机产生的文件名,用于完成运算所需的临时文件或文件夹

MoveFile(source,destination)
将source指定的一个或多个源文件移动到destination指定的目的文件夹。在source里可以包含通配符,但destination不行。如果source包含通过配符或destination末尾是路径分隔符(‘\’),那么认为destination是一文件夹。否则,认为destination是一新文件夹的完整路径和名称。如果目的文件夹已经存在则产生错误

OpenTextFile(filename,iomode,create,
    format)
创建一个名叫做filename的文件,或打开一个现有的名为filename的文件,并且返回一个与其相关的TextStream对象。filename参数可以包含绝对或相对路径。iomode参数指定了所要求的访问类型。允许的数值是ForReading(1)(缺省)、ForWriting(2)、ForAppending(8)。当写入或追加到一个不存在的文件时,如果create参数设置为true,就将创建一个新文件。缺省的create参数是False。format参数说明对文件读或写的数据格式。允许数值是:TristatetFalse(0)(缺省),按照ASCII格式打开;TristatetTrue(-1),按照Unicode格式打开;TristateDefault(-2),用系统缺省格式打开

       Unicode文件使用两个字节标识每个字符,取消了ASCII字符最多256个的限制。

5.4.2 使用驱动器
       下面是使用FileSystemObject对象的简单例子,它使用DriveExists方法得到现有的驱动器字母的列表:
       ‘ In VBScript
       Set objFSO = Server.CreateObject(“Scripting.FileSystemObject”)
       For intCode = 65 To 90                ‘ANSI codes for ‘A’ to ‘Z’
              strLetter = Chr(intCode)
              If objFSO.DriveExists(strLetter) Then
                     Response.Write “Found drive “ & strLetter & “:<BR>”
              End If
       Next
       或用JScript:
       // In Jscript
       var objFSO = Server.CreateObject(‘Scripting.FileSystemObject’);
       for (var intCode = 65; intCode <= 90; intCode++) {    //ANSI codes for ‘A’ to ‘Z’
              strLetter = String.formCharCode(intCode);
              If (objFSO.DriveExists(strLetter))
                     Response.Write (‘Found drive ‘ + strLetter + “:<BR>”);
       }
       这两个程序段的运行结果是相同的,如图5-9所示:


图5-9  驱动器列表
       这一页面为driveexists_vb.asp,由本书的示例文件提供。
1.  Drive对象
正如已经看到的,FileSystemObject对象包含一个属性——Drives,它返回一个包括本地计算机上所有可用驱动器的集合。
Drives集合里的每个条目是一个Drive对象。Drive对象的属性如表5-8所示:
表5-8  Drive对象的属性及说明
属 性
说 明

AvailableSpave
考虑了帐户定额和/或其他限制,返回驱动器上对于该用户可用的空间的大小

DriveLetter
返回驱动器的字母

DriveType
返回驱动器的类型。返回值可以是Unknown(0)、Removeable(1)、Fixed(2)、Network(3)、CDRom(4)和RamDisk(5)。然而需要注意的是当前版本的scrrun.dll不支持预定义常数Network,必须使用十进制3来代替

FileSystem
返回驱动器文件系统的类型。返回值包括“FAT”、“NTFS”和“CDFS”

FreeSpace
返回驱动器上可用剩余空间的总量

IsReady
返回一个布尔值表明驱动器是否已准备好

Path
返回一个由驱动器字母和冒号组成的驱动器路径,即“C:”

RootFolder
返回代表的驱动器根目录文件夹的Folder对象

SerialNumber
返回一个用于识别磁盘卷的十进制的序列号

ShareName
如果是一个网络驱动器,返回该驱动器的网络共享名

TotalSize
返回驱动器的总容量(以字节为单位)

VolumeName
设定或返回本地驱动器卷名

       因此,通过使用Drives集合里的Drive对象,可以在服务器上产生一个驱动器列表,与通过检查每个可能的驱动器字母来判别驱动器是否存在的方法相比,效率更高。我们也可以得到关于该驱动器的信息。在VBScript里,代码如下:
' In VBScript:
' create a FileSystemObject instance
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
' create a Drives collection
Set colDrives = objFSO.Drives
' iterate through the Drives collection
For Each objDrive in colDrives

  Response.Write "DriveLetter: <B>" & objDrive.DriveLetter & "</B>&nbsp; &nbsp;"
  Response.Write "DriveType: <B>" & objDrive.DriveType
  Select Case objDrive.DriveType
    Case 0: Response.Write " - (Unknown)"
    Case 1: Response.Write " - (Removable)"
    Case 2: Response.Write " - (Fixed)"
    Case 3: Response.Write " - (Network)"
    Case 4: Response.Write " - (CDRom)"
    Case 5: Response.Write " - (RamDisk)"
  End Select
  Response.Write "</B>&nbsp; &nbsp;"

If objDrive.DriveType = 3 Then
    If objDrive.IsReady Then
      Response.Write "Remote drive with ShareName: <B>" & objDrive.ShareName & "</B>"
    Else
Response.Write "Remote drive - <B>IsReady</B> property returned_
<B>False</B><BR>"
    End If
  Else If objDrive.IsReady then
    Response.Write "FileSystem: <B>" & objDrive.FileSystem & "</B>&nbsp; &nbsp;"
    Response.Write "SerialNumber: <B>" & objDrive.SerialNumber & "</B><BR>"
Response.Write "Local drive with VolumeName: <B>" & _
objDrive.VolumeName & "</B><BR>"
Response.Write "AvailableSpace: <B>" & FormatNumber( _
objDrive.AvailableSpace / 1024, 0) & "</B> KB&nbsp; &nbsp;"
Response.Write "FreeSpace: <B>" & FormatNumber( _
objDrive.FreeSpace / 1024, 0) & "</B> KB&nbsp; &nbsp;"
Response.Write "TotalSize: <B>" & FormatNumber(_
objDrive.TotalSize / 1024, 0) & "</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有助于理解所有文件系统定位相关的组件、对象、方法和属性之间的关系。
 
分享到:
评论

相关推荐

    ASP3.0高级编程技术

    ASP3.0高级编程技术是Web开发领域中的一个重要里程碑,它是Active Server Pages的第三个主要版本,主要用于构建动态、交互式的网站。在这个版本中,开发者能够利用更强大的功能和改进的性能来创建复杂的Web应用程序...

    ASP3.0高级编程

    ASP3.0高级编程是针对Web开发人员深入学习ASP(Active Server Pages)技术的重要参考资料。在ASP3.0中,微软引入了许多增强功能,使得它成为构建动态网站和Web应用程序的强大工具。本教程旨在帮助开发者掌握ASP3.0的...

    ASP3.0高级编程.pDF

    本书《ASP3.0高级编程》应该是针对这一技术的深入解析和实践指导。 1. **ASP3.0基础**:ASP3.0的核心概念包括脚本语言支持、服务器端控件、内置对象等。学习者应掌握如何创建基本的ASP页面,理解Response、Request...

    ASP3.0高级编程技术中文版—1

    1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中的新特性 24 1.5.1 ASP 3.0新特性概要 24 1.5.2 对ASP 2.0的改进 26 1.5.3 VBScript 5.0中的新特性 28 1.5.4 JScript 5.0中...

    《ASP 3.0高级编程技术》中文版-2

    1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中的新特性 24 1.5.1 ASP 3.0新特性概要 24 1.5.2 对ASP 2.0的改进 26 1.5.3 VBScript 5.0中的新特性 28 1.5.4 JScript 5.0中...

    ASP.NET MVC3.0 高级编程

    ASP.NET MVC3.0 是微软开发的一个开源框架,用于构建高度可测试和可维护的Web应用程序。...通过阅读《ASP.NET MVC3.0 高级编程》这本书,你可以获取更多关于这些主题的详细信息,掌握实际开发中的最佳实践。

    ASP 3.0高级编程.rar

    通过深入研究"ASP 3.0高级编程",开发者不仅可以熟练运用ASP 3.0的各种特性和功能,还能为向更现代的技术栈过渡打下坚实的基础,例如ASP.NET或Node.js等。不断学习和适应新的技术,是IT行业从业者保持竞争力的关键。

    ASP 3.0高级编程(一)

    ### ASP 3.0高级编程知识点详解 #### ASP 3.0概述 ASP(Active Server Pages)3.0是微软开发的一种服务器端脚本环境,用于创建动态网页和应用程序。它允许网页开发者在HTML页面中嵌入脚本或ActiveX组件,从而实现更...

    ASP 3.0高级编程

    ASP 3.0高级编程.

    精通ASP3.0网络编程

    通过"精通ASP3.0网络编程"的学习,你不仅将掌握ASP3.0的核心技术,还能培养解决实际问题的能力,从而成为一名熟练的Web开发者。在实践中不断磨炼,你将能够构建出高效、安全且用户友好的Web应用程序。

    《C#与.NET 3.0高级程序设计》[源代码+英文PDF电子书]

    本书是C# 领域久负盛名的经典著作,深入全面地叙述了C# 编程语言和.NET...另外,还介绍了最新的C# 3.0 编程语言和LINQ 编程技术。本书由微软C# MVP Andrew Troelsen 编写,历经多次修订,适合各层次.NET 开发人员阅读。

    ASP.NET MVC3.0 高级编程完整版

    在"ASP.NET MVC3.0 高级编程完整版"中,我们可能涵盖以下关键知识点: 1. **MVC模式**:MVC是一种软件设计模式,将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型负责处理...

    ASP3.0高级编程_Part1

    在"ASP3.0高级编程_Part1"中,这些知识点可能被详细讲解,并结合实际案例进行阐述,以帮助读者理解并掌握ASP.NET 3.0的高级特性和最佳实践。通过阅读给出的PDF文件(01.PDF至05.PDF),读者将有机会深入学习这些内容...

    ASP3.0高级编程_Part5

    《ASP.NET 3.0高级编程》是一本深入探讨ASP.NET技术的专业书籍,它涵盖了ASP.NET 3.0的核心概念和高级特性。该书通过图文并茂的方式,为读者提供了丰富的学习资源,还配备有详细的书签,使得阅读和查阅变得极其方便...

    ASP3.0高级编程_Part2

    在这个“ASP3.0高级编程_Part2”中,我们将会深入探讨ASP.NET 3.0的一些核心概念和技术,包括但不限于控件编程、数据绑定、状态管理、安全性以及性能优化。 1. **控件编程**:ASP.NET 3.0引入了大量服务器控件,如...

    ASP 3.0 高级编程

    ASP 3.0 网页制作教程

    外文翻译asp-3.0-高级编程大学论文.doc

    "ASP 3.0高级编程大学论文" 本文档主要介绍了ASP 3.0高级编程的相关知识点,涵盖了WWW的起源、HTML的基本结构、HTML的发展历史、动态内容的缺乏、早期网站的缺陷等方面。 一、WWW的起源 WWW(World Wide Web)...

Global site tag (gtag.js) - Google Analytics