精灵巫婆 发表于 2015-1-16 22:55:31

ASP网页编程之Scripting.FileSystemObject工具

对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。filesystemobject|工具
FileSystemObject工具供应对盘算机文件体系的会见,它同意我们在代码内操纵文本文件、文件夹及驱动器。它是剧本运转期库供应的工具之一,关于服务器ASP页面内的VBScript和JScript都无效。假如页面的扩大名为.hta(暗示它们是HTA的一部分),它也可用在客户真个IE5中。本节仅会商在服务器上的ASP剧本怎样利用FileSystemObject工具。
超等文本使用程序(HTA)由指定的“受信托的”页面构成,在页面的<HEAD>段里包括<HTA:APPLICATION>元素。比方:
<HTA:APPLICATIONID=”objMyApp”APPLICATIONNAME=”myApp”>
这些页面可使用客户端剧本引擎中的一些不经常使用特征,这些特征中有FileSystemObject工具和TextStream工具。关于超等文本使用程序的更多信息,请会见MicrosoftWorkshop网站。
可使用上面的程序创立一个FileSystemObject工具实例:
‘InVBScript:
DimobjMyFSO
SetobjMyFSO=Server.CreateObject(“Scripting.FileSystemObject”)

//InJScript:
varobjMyFSO=Server.CreateObject(‘Scripting.FileSystemObject’);

<!--Server-sidewithanOBJECTelement-->
<OBJECTRUNAT=”SERVER”SCOPE=”PAGE”ID=”objFSO”
PROGID=”Scripting.FileSystemObject”>
</OBJECT>
在ASP页面里,增添一个关于FileSystemObject范例库的援用长短常有效的。这同意利用它间接界说的内置常数,不必像已往那样用数字等效表达式取代。全部剧本运转期库的范例库能够增添就任何ASP页面中,代码以下:
<!--METADATATYPE=”typelib”FILE=”C:WinNTSystem32scrrun.dll”-->假如你是在另外一个目次下安装Windows,必需编纂FILE的属性值。
5.4.1FileSystemObject工具成员提要
FileSystemObject工具供应一个属性和一系列办法,可用它们来利用FileSystemObject工具完成的一些附属工具。这里供应了全体的内容提要,然后先容每个附属工具。
1.FileSystemObject的属性
FileSystemObject工具只要一个属性,它用于失掉以后呆板上的一切无效驱动器的列表,如表5-4所示:
表5-4FileSystemObject工具的属性及申明
属性
说明

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办法失掉现有的驱动器字母的列表:
‘InVBScript
SetobjFSO=Server.CreateObject(“Scripting.FileSystemObject”)
ForintCode=65To90‘ANSIcodesfor‘A’to‘Z’
strLetter=Chr(intCode)
IfobjFSO.DriveExists(strLetter)Then
Response.Write“Founddrive“&strLetter&“:<BR>”
EndIf
Next
或用JScript:
//InJscript
varobjFSO=Server.CreateObject(‘Scripting.FileSystemObject’);
for(varintCode=65;intCode<=90;intCode++){//ANSIcodesfor‘A’to‘Z’
strLetter=String.formCharCode(intCode);
If(objFSO.DriveExists(strLetter))
Response.Write(‘Founddrive‘+strLetter+“:<BR>”);
}
这两个程序段的运转了局是不异的,如-9所示:


这一页面为driveexists_vb.asp,由本书的示例文件供应。
1.Drive工具
正如已看到的,FileSystemObject工具包括一个属性――Drives,它前往一个包含当地盘算机上一切可用驱动器的汇合。
Drives汇合里的每一个条目是一个Drive工具。Drive工具的属性如表5-8所示:
表5-8Drive工具的属性及申明
属性
说明

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里,代码以下:
InVBScript:
createaFileSystemObjectinstance
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
createaDrivescollection
SetcolDrives=objFSO.Drives
iteratethroughtheDrivescollection
ForEachobjDriveincolDrives

Response.Write"DriveLetter:<B>"&objDrive.DriveLetter&"</B>"
Response.Write"DriveType:<B>"&objDrive.DriveType
SelectCaseobjDrive.DriveType
Case0:Response.Write"-(Unknown)"
Case1:Response.Write"-(Removable)"
Case2:Response.Write"-(Fixed)"
Case3:Response.Write"-(Network)"
Case4:Response.Write"-(CDRom)"
Case5:Response.Write"-(RamDisk)"
EndSelect
Response.Write"</B>"

IfobjDrive.DriveType=3Then
IfobjDrive.IsReadyThen
Response.Write"RemotedrivewithShareName:<B>"&objDrive.ShareName&"</B>"
Else
Response.Write"Remotedrive-<B>IsReady</B>propertyreturned_
<B>False</B><BR>"
EndIf
ElseIfobjDrive.IsReadythen
Response.Write"FileSystem:<B>"&objDrive.FileSystem&"</B>"
Response.Write"SerialNumber:<B>"&objDrive.SerialNumber&"</B><BR>"
Response.Write"LocaldrivewithVolumeName:<B>"&_
objDrive.VolumeName&"</B><BR>"
Response.Write"AvailableSpace:<B>"&FormatNumber(_
objDrive.AvailableSpace/1024,0)&"</B>KB"
Response.Write"FreeSpace:<B>"&FormatNumber(_
objDrive.FreeSpace/1024,0)&"</B>KB"
Response.Write"TotalSize:<B>"&FormatNumber(_
objDrive.TotalSize/1024,0)&"</B>KB"
Endif
Response.Write"<P>"
Endif
Next
注重,不克不及用预界说常数Network对照驱动器的DriveType属性,由于(最少在scrrun.dll确当前版本中)在范例库中省略了Network常数,因而不再作为公用的常数利用。
在JScript中,该程序是:
//InJScript:
//createaFileSystemObjectinstance
varobjFSO=Server.CreateObject(Scripting.FileSystemObject);
//createaDrivescollection
varcolDrives=newEnumerator(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(RemotedrivewithShareName:+
objDrive.ShareName+<BR>)
else
Response.Write(Remotedrive-IsReadypropertyreturnedFalse<BR><BR>);
elseif(objDrive.IsReady){
Response.Write(LocaldrivewithVolumeName:+
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驱动器里没有光盘,将失掉一个毛病提醒:“DiskNotReady”。除DriveLetter属性和DriveType属性外,在利用其他属性和办法前,经由过程反省每一个驱动器的IsReady属性,能够回护该页面。
当在服务器上运转以上VBScript代码时,运转了局如-10所示。这一页面为drivescollection_vb.asp,来自本书供应的示例文件。

2.文件体系定位
FileSystemObject的几个办法可用于失掉其他工具的援用,因而能够在服务器的文件体系和任何收集驱动器中定位。现实上,在ASP代码里利用的一切工具或组件中,除ActiveXDataObject组件,FileSystemObject工具极可能是最庞大的工具之一。
这类庞大性是因为对怎样会见文件体系的分歧部分,请求有极高的天真性。比方,能够从FileSystemObject向下经由过程利用各类附属工具定位一个文件。其历程是从Drives汇合入手下手,到一个Drive工具,再到驱动器的根Folder工具,然后到子Folder工具,再到文件夹的Files汇合,最初到汇合内的File工具。
别的,假如已知要会见的驱动器、文件夹或文件。能够间接对其利用GetDrive、GetFolder、GetSpecialFolder和GetFile办法。-11有助于了解一切文件体系定位相干的组件、工具、办法和属性之间的干系。

1.Folder工具
Driver工具的RootFolder属性前往一个Folder工具,经由过程该工具可会见这个驱动器内的一切的内容。可使用这个Folder工具的属性和办法遍历驱动器上的目次,并失掉该文件夹和其他文件夹的属性。
(1)Folder工具的属性
Folder工具供应一组属性,可用这些属性失掉关于以后文件夹的更多信息,也能够改动该文件夹的称号。其属性及申明如表5-9所示:
表5-9Folder工具的属性及申明
属性
说明

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
假如大概,前往一个文件夹的申明字符串(比方,“RecycleBin”)

(2)Folder工具的办法
Folder工具供应一组可用于复制、删除和挪动以后文件夹的办法。这些办法的运转体例与FileSystemObject工具的CopyFolder、DeleFolder和MoveFolder办法不异,但这些办法不请求source参数,由于源文件就是这个文件夹。这些办法及申明如表5-10所示:
表5-10Folder工具的办法及申明
方法
说明

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程序以下:
InVBScript:
CreateaFileSystemObjectinstance
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
GetareferencetodriveC
SetobjDriveC=objFSO.GetDrive("C:")
Getareferencetotherootfolder
SetobjRoot=objDriveC.RootFolder
GetareferencetotheSubFolderscollection
SetobjFolders=objRoot.SubFolders
GetareferencetothefirstfolderintheSubFolderscollection
ForEachobjFolderInobjFolders
SetobjFolder1=objFolders.Item((objFolder.Name))
ExitFor
Next
Iteratethroughallthefilesinthisfolder
ForEachobjFileinobjFolder1.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
JScript程序以下:
//InJScript:
//CreateaFileSystemObjectinstance
varobjFSO=Server.CreateObject(Scripting.FileSystemObject);
//GetareferencetodriveC
varobjDriveC=objFSO.GetDrive(C:);
//Getareferencetotherootfolder
varobjRoot=objDriveC.RootFolder;
//GetareferencetothefirstfolderintheSubFolderscollection
varcolAllFolders=newEnumerator(objRoot.SubFolders);
varobjFolder1=colAllFolders.item();
//GetareferencetotheFilescollectionforthisfolder
varcolFiles=newEnumerator(objFolder1.Files);

//Iteratethroughallthefilesinthiscollection
for(;!colFiles.atEnd();colFiles.moveNext()){
objFile=colFiles.item()
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(Accessed:+objFile.DateLastAccessed+);
Response.Write(Modified:+objFile.DateLastModified+<P>);
}
该VBScript程序在服务器上运转时的了局如-12所示。该页面为folderscollection_vb.asp,来自本书供应的示例文件。

(3)利用特别文件夹
GetSpecialFolder是FileSystemObject工具的办法之一,它前往盘算机上三个“特别文件夹”对应的Folder工具:
·WindowsFolder:%Windows%目次,缺省为WinNT(或Windows,在非NT/2000盘算机上)目次。
·SystemFolder:%System%目次,缺省为WinNTSystem32(或WindowsSystem,在非NT/2000盘算机上)目次。
·TemporaryFolder:%Temp%目次,缺省为WinNTTemp(或WindowsTemp,在非NT/2000盘算机上)目次。
为失掉对特别文件夹的援用,我们供应响应的预界说常数作为GetSpecialFolder办法的参数:
InVBScript:
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")

SetobjFolder=objFSO.GetSpecialFolder(WindowsFolder)
Response.Write"GetSpecialFolder(WindowsFolder)returned:<BR>"
Response.Write"Path:"&objFolder.Path&"<BR>"
Response.Write"Type:"&objFolder.Type&"<P>"

SetobjFolder=objFSO.GetSpecialFolder(SystemFolder)
Response.Write"GetSpecialFolder(SystemFolder)returned:<BR>"
Response.Write"Path:"&objFolder.Path&"<BR>"
Response.Write"Type:"&objFolder.Type&"<P>"

SetobjFolder=objFSO.GetSpecialFolder(TemporaryFolder)
Response.Write"GetSpecialFolder(TemporaryFolder)returned:<BR>"
Response.Write"Path:"&objFolder.Path&"<BR>"
Response.Write"Type:"&objFolder.Type&"<P>"
或用JScript:
//InJScript:
varobjFSO=Server.CreateObject(Scripting.FileSystemObject);

varobjFolder=objFSO.GetSpecialFolder(WindowsFolder);
Response.Write(GetSpecialFolder(WindowsFolder)returned-);
Response.Write(Path:+objFolder.Path+);
Response.Write(Type:+objFolder.Type+<BR>);

varobjFolder=objFSO.GetSpecialFolder(SystemFolder);
Response.Write(GetSpecialFolder(SystemFolder)returned-);
Response.Write(Path:+objFolder.Path+);
Response.Write(Type:+objFolder.Type+<BR>);

varobjFolder=objFSO.GetSpecialFolder(TemporaryFolder);
Response.Write(GetSpecialFolder(TemporaryFolder)returned-);
Response.Write(Path:+objFolder.Path+);
Response.Write(Type:+objFolder.Type+<BR>);
该VBScript程序在服务器上运转时的了局如-13所示。该页面名为specialfolder_vb.asp,来自本书供应的示例文件。

2.File工具
File工具供应了对文件的属性的会见,经由过程它的办法可以对文件举行操纵。每一个Folder工具供应了一个Files汇合,包括文件夹中文件对应的File工具。还能够间接地从FileSystemObject工具中经由过程利用GetFile办法失掉一个File工具援用。
(1)File工具的属性
File工具有一系列的属性,相似于Folder工具的属性,如表5-11所示:
表5-11File工具的属性及申明
属性
说明

Attributes
前往文件的属性。能够是以下值中的一个或其组合:Normal(0)、ReadOnly(1)、Hidden(2)、System(4)、Volume(称号)(9)、Directory(文件夹)(16)、Archive(32)、Alias(64)和Compressed(128)

DateCreated
前往该文件夹的创立日期和工夫

DateLastAccessed
前往最初一次会见该文件的日期和工夫

DateLastModified
前往最初一次修正该文件的日期和工夫

Drive
前往该文件地点的驱动器的Drive工具

Name
设定或前往文件的名字

ParentFolder
前往该文件的父文件夹的Folder工具

Path
前往文件的相对路径,可以使用长文件名

ShortName
前往DOS作风的8.3情势的文件名

ShortPath
前往DOS作风的8.3情势的文件相对路径

Size
前往该文件的巨细(字节)

Type
假如大概,前往一个文件范例的申明字符串(比方:“TextDocument”暗示.txt文件)

(2)File工具的办法
一样相似于Folder工具,File工具的办法同意复制、删除和挪动文件。它也有一个利用文本流翻开文件的办法。File工具的办法及申明如表5-12所示:
表5-12File工具的办法及申明
方法
说明

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

OpenAsTextStream
(iomode,format)
翻开指定文件而且前往一个TextStream工具,用于文件的读、写或追加。iomode参数指定了请求的会见范例,同意值是ForReading(1)(缺省值)、ForWrite(2)、ForAppending(8)。format参数申明了读、写文件的数据格局。同意值是TristateFalse(0)(缺省),申明用ASCII数据格局;TristateTrue(-1)申明用Unicode数据格局;TristateUseDefault(-2)申明利用体系缺省格局

因而给定一个File工具后,可使用ParentFolder属性失掉包括该文件的Folder工具的援用,用来在文件体系中导航。乃至能够用Drive属性取得响应的Drive工具的援用,并失掉各类Folder工具和所包括的File工具。
别的,给定一个Folder工具和对应的Files汇合后,能够经由过程遍历该汇合反省这一文件夹中的每一个文件。还可使用File工具的各类办法以必定体例处置该文件,如复制、挪动或删除。上面的代码给出了C驱动器的第一个文件夹的文件列表:
InVBScript:
CreateaFileSystemObjectinstance
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
GetareferencetodriveC
SetobjDriveC=objFSO.GetDrive("C:")
Getareferencetotherootfolder
SetobjRoot=objDriveC.RootFolder
GetareferencetotheSubFolderscollection
SetobjFolders=objRoot.SubFolders
GetareferencetothefirstfolderintheSubFolderscollection
ForEachobjFolderInobjFolders
SetobjFolder1=objFolders.Item((objFolder.Name))
ExitFor
Next
Iteratethroughallthefilesinthisfolder
ForEachobjFileinobjFolder1.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
注重,不克不及利用数字索引来定位Folders或Files汇合里的条目,因而必需利用ForEach…Next语句遍历该汇合直到最后的条目,然后利用该条目标Name属性。也不能不利用嵌套的圆括号强制其作为值(字符串)传送给该Folders汇合的Item办法。
用上面的JScript程序可完成一样的事情:
//InJScript:
//CreateaFileSystemObjectinstance
varobjFSO=Server.CreateObject(Scripting.FileSystemObject);
//GetareferencetodriveC
varobjDriveC=objFSO.GetDrive(C:);
//Getareferencetotherootfolder
varobjRoot=objDriveC.RootFolder;
//GetareferencetothefirstfolderintheSubFolderscollection
varcolAllFolders=newEnumerator(objRoot.SubFolders);
varobjFolder1=colAllFolders.item();
//GetareferencetotheFilescollectionforthisfolder
varcolFiles=newEnumerator(objFolder1.Files);

//Iteratethroughallthefilesinthiscollection
for(;!colFiles.atEnd();colFiles.moveNext()){
objFile=colFiles.item()
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(Accessed:+objFile.DateLastAccessed+);
Response.Write(Modified:+objFile.DateLastModified+<P>);
}
两个程序的了局是不异的,如-14所示。该页面为filescollection_vb.asp,来自本书供应的示例文件。


在C驱动器上的第一个文件夹多是CAConfig,缺省情形下该文件夹是空的。这类情形下,可先向该文件夹复制一些文件,完成实行今后再删除这些文件。


ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。

透明 发表于 2015-1-20 06:11:31

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

第二个灵魂 发表于 2015-1-28 20:37:23

掌握asp的特性而且一定要知道为什么。

飘飘悠悠 发表于 2015-2-5 22:49:54

先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习

变相怪杰 发表于 2015-2-14 01:21:27

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

分手快乐 发表于 2015-3-11 16:07:35

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

柔情似水 发表于 2015-3-19 01:49:23

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

活着的死人 发表于 2015-3-27 03:09:45

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
页: [1]
查看完整版本: ASP网页编程之Scripting.FileSystemObject工具