Scripting.FileSystemObject对象的详细技巧指南

Scripting.FileSystemObject对象的详细技巧指南

FileSystemObject对象提供对计算机文件系统的访问:

powered by 25175.net

在代码内操作文本文件、文件夹及驱动器。它是脚本运行期库提供的对象之一,对于服务器ASP页面内的VBScript和JScript都有效。如果页面的扩展名为.hta(表示它们是HTA的一部分),它也可用在客户端的IE 5中。本节仅讨论在服务器上的ASP脚本如何使用FileSystemObject对象。
       超级文本应用程序(HTA)由指定的“受信任的”页面组成,在页面的<HEAD>段里包含<HTA: APPLICATION>元素。例如:
    <HTA:APPLICATION ID=”objMyApp” APPLICATIONNAME=”myApp”>
这些页面可以使用客户端脚本引擎中的一些不常用特性,这些特性中有FileSystemObject对象和TextStream对象。关于超级文本应用程序的更多信息,请访问Microsoft Workshop网站。
可以使用下面的程序创建一个FileSystemObject对象实例:
‘ In VBScript:
Dim objMyFSO
Set objMyFSO = Server.CreateObject(“Scripting.FileSystemObject”)

// In JScript:
var objMyFSO = Server.CreateObject(‘Scripting.FileSystemObject’);

<!-- Server-side with an OBJECT element -->
<OBJECT RUNAT=”SERVER” SCOPE=”PAGE” ID=”objFSO”
              PROGID=”Scripting.FileSystemObject”>
</OBJECT>
在ASP页面里,增加一个对于FileSystemObject类型库的引用是非常有用的。这允许使用它直接定义的内置常数,不用像过去那样用数字等效表达式代替。整个脚本运行期库的类型库可以增加到任何ASP页面中,代码如下:
<!-- METADATA TYPE=”typelib” FILE=”C:WinNTSystem32scrrun.dll” -->如果你是在另一个目录下安装Windows,必须编辑FILE的属性值。
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:”及“\machinesharename” 

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:docssales”,而pathspec是“jan”,返回的字符是“c:docssalesjan”。通配符、”..”和”\”路径操作符都是可以接受的 

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
      

 

1.  Folder对象
Driver对象的RootFolder属性返回一个Folder对象,通过该对象可访问这个驱动器内的所有的内容。可以使用这个Folder对象的属性和方法遍历驱动器上的目录,并得到该文件夹和其他文件夹的属性。
(1)    Folder对象的属性
Folder对象提供一组属性,可用这些属性得到关于当前文件夹的更多信息,也可以改变该文件夹的名称。其属性及说明如表5-9所示:
表5-9  Folder 对象的属性及说明
属 性 
说 明 

Attributes 
返回文件夹的属性。可以是下列值中的一个或其组合:Normal(0)、ReadOnly(1)、Hidden(2)、System(4)、Volume(名称)(8)、Directory(文件夹)(16)、Archive(32)、Alias(64)和Compressed(128)。例如,一个隐藏的只读文件,Attributes的值为3 

DateCreated 
返回该文件夹的创建日期和时间 

DateLastAccessed 
返回最后一次访问该文件夹的日期和时间 

DateLastModified 
返回最后一次修改该文件夹的日期和时间 

Drive 
返回该文件夹所在的驱动器的驱动器字母 

Files 
返回Folder对象包含的Files集合,表示该文件夹内所有的文件 

IsRootFolder 
返回一个布尔值说明该文件夹是否是当前驱动器的根文件夹 

Name 
设定或返回文件夹的名字 

ParentFolder 
返回该文件夹的父文件夹对应的Folder对象 

Path 
返回文件夹的绝对路径,使用相应的长文件名 

ShortName 
返回DOS风格的8.3形式的文件夹名 

ShortPath 
返回DOS风格的8.3形式的文件夹的绝对路径 

Size 
返回包含在该文件夹里所有文件和子文件夹的大小 

SubFolers 
返回该文件夹内包含的所有子文件夹对应的Folders集合,包括隐藏文件夹和系统文件夹 

Type 
如果可能,返回一个文件夹的说明字符串(例如,“Recycle Bin”) 

(2)    Folder对象的方法
Folder对象提供一组可用于复制、删除和移动当前文件夹的方法。这些方法的运行方式与FileSystemObject对象的CopyFolder、DeleFolder和MoveFolder方法相同,但这些方法不要求source参数,因为源文件就是这个文件夹。这些方法及说明如表5-10所示:
表5-10  Folder对象的方法及说明
方 法 
说 明 

Copy(destination,overwrite) 
将这个文件夹及所有的内容复制到destination指定的文件夹。如果destination的末尾是路径分隔符(‘’),那么认为destination是放置拷贝文件夹的一个文件夹。否则认为destination是要创建的新文件夹的路径和名字。如果目标文件夹已经存在且overwrite参数设置为False,将产生错误,缺省的overwrite参数是True 

Delete(force) 
删除文件夹及里面的所有内容。如果可选的force参数设置为True,即使文件夹设置为只读或含有只读的文件,也将删除该文件夹。缺省的force是False 

Move(destination) 
将文件夹及里面所有的内容移动到destination指定的文件夹。如果destination的末尾是路径分隔符(‘’),那么认为destination是放置移动文件夹的一个文件夹。否则认为destination是一个新的文件夹的路径和名字。如果目标文件夹已经存在,则出错 

CreateTextFile
(filename,overwrite,unicode) 
用指定的文件名在文件夹内创建一个新的文本文件,并且返回一个相应的TextStream对象。如果可选的overwrite参数设置为True,将覆盖任何已有的同名文件。缺省的overwrite参数是False。如果可选的unicode参数设置为True,文件的内容将存储为unicode文本。缺省的unicode是False 

       在文件夹之间可以使用当前文件夹的ParentFolder属性,返回到父目录。当到达一个文件夹时,如果IsRootFolder属性是True,就停下来。离开驱动器的根目录,沿目录树向下,可遍历或访问在Folders集合(由当前文件夹的SubFolders属性返回)内的指定文件夹。
       下列程序遍历了驱动器C根目录内的所有文件夹,并显示各个文件夹的有关信息。
       VBScript程序如下:
       'In VBScript:
' Create a FileSystemObject instance
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
' Get a reference to drive C
Set objDriveC = objFSO.GetDrive("C:")
' Get a reference to the root folder
Set objRoot = objDriveC.RootFolder
' Get a reference to the SubFolders collection
Set objFolders = objRoot.SubFolders
' Get a reference to the first folder in the SubFolders collection
For Each objFolder In objFolders
  Set objFolder1 = objFolders.Item((objFolder.Name))
  Exit For
Next
' Iterate through all the files in this folder
For Each objFile in objFolder1.Files
  Response.Write "Name: " & objFile.Name & "   "
  Response.Write "ShortName: " & objFile.ShortName & "   "
  Response.Write "Size: " & objFile.Size & " bytes    "
  Response.Write "Type: " & objFile.Type & "<BR>"
  Response.Write "Path: " & objFile.Path & "   "
  Response.Write "ShortPath: " & objFile.ShortPath & "<BR>"
  Response.Write "Created: " & objFile.DateCreated & "   "
  Response.Write "LastModified: " & objFile.DateLastModified & "<P>"
Next

http://www.25175.com/200609/25175/25175_html/2007-12/2591.html

上一篇:wpf 触摸屏 button 背景为null的 问题


下一篇:解决:当前标识(DESKTOP-29DL0H4\ld0)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限。