我们将要操纵的计算机文件系统,在这里是指位于web服务器之上。所以,确认你对此拥有合适的权限。理想情况下,你可以在自己的机器上建立一个web服务器,这样就能方便地进行测试。
Drive Object:驱动器对象 供存取磁盘或者网络驱动器
FileSystemObject Object:文件系统对象 供存取计算机的文件系统
Folder Object:文件夹对象 供存取文件夹的所有属性
TextStream Object:文本流对象 供存取文件内容
为了使用FSO来执行所有的工作,首先要创建对象,代码就象下面这样:
< % Set fso = Server.CreateObject("Scripting.FileSystemObject") % > |
FSO方法 | |
CopyFile | 拷贝一个或者多个文件到新路径 |
CreateTextFile | 创建文件并且返回一个TextStream对象 |
DeleteFile | 删除一个文件 |
OpenTextFile | 打开文件并且返回TextStream对象,以便读取或者追加 |
Set fso = Server.CreateObject("Scripting.FileSystemObject")
*****************FSO文件****************
----------显示文件列表------------
Set f = fso.GetFolder(folderspec)
Set fc = f.Files
For Each f1 in fc
s = s & f1.name
s = s & "|"
Next
----------文件扩展名------------
fso.GetExtensionName(filename)
----------文件是否存在------------
fso.FileExists(FileName)
‘返回;True 或 False
----------文件删除------------
fso.deleteFile(FileName)
----------文件复制------------
Set MyFile = fso.GetFile(源文件)
MyFile.Copy 目标文件
----------文件移动------------
fso.MoveFile 源文件,目标文件或路径
----------文件属性------------
Set f = fso.GetFile(FileName)
select Case f.attributes
Case 0 Str="普通文件。没有设置任何属性。 "
Case 1 Str="只读文件。可读写。 "
Case 2 Str="隐藏文件。可读写。 "
Case 4 Str="系统文件。可读写。 "
Case 16 Str="文件夹或目录。只读。 "
Case 32 Str="上次备份后已更改的文件。可读写。 "
Case 1024 Str="链接或快捷方式。只读。 "
Case 2048 Str=" 压缩文件。只读。"
End select
f.Datecreated '// -----创建时间
f.DateLastAccessed '//-----上次访问时间
f.DateLastModified '//-----上次修改时间
f.Path '//-----文件路径
f.Name '//-----文件名称
f.Type '//-----文件类型
f.Size '//-----文件大小,单位字节
f.ParentFolder '//父目录
----------文件操作------------
Const ForReading = 1, ForWriting = 2 , ForAppending = 8
'读文本文件
Set f = fso.OpenTextFile(FileName, ForReading)
str = f.ReadLine '//-----读一行
str = f.ReadAll '//-----读全文
str = f.Read(n) '//-----读取指定数量的字符
'创建文件
fso.CreateTextFile (FileName, True) '----True:覆盖已有文件
'写文本文件
'//-----文件进行写操作
Set f = fso.OpenTextFile(FileName, ForWriting, True)
'Set f = fso.OpenTextFile(FileName, ForWriting)
f.Write TextStr
f.WriteLine TextStr '相当于f.Write TextStr&vbcrlf,在TextStr后加一个回车换行
f.Close
'//-----文件末尾进行写操作
Set f = fso.OpenTextFile(FileName, ForAppending)
f.Write TextStr
f.Close
'删除文件
Set f = fso.GetFile(FileName)
f.Delete
******************FSO目录*************
Set f = fso.createFolder(FolderName) '//-----创建文件夹
fso.deleteFolder (Folderspec) '//-----删除文件夹
fso.CopyFolder SourceFolder,DestinationFolder '//-----复制文件夹
fso.MoveFolder SourcePath, DestinationPath '//-----移动文件夹
fso.FolderExists(fldr) '//-----判断目录是否存在
'目录创建时信息
Set f = fso.GetFolder(FolderName)
f.Datecreated '// 1 -----创建时间
f.DateLastAccessed '// 2 -----上次访问时间
f.DateLastModified '// 3 -----上次修改时间
f.Path '// 4 -----文件路径
f.Name '// 5 -----文件名称
f.Type '// 6 -----文件类型
f.Size '// 7 -----文件大小
f.ParentFolder '// 8 -----父目录
'显示目录列表
Set f = fso.GetFolder(folderspec)
Set fc = f.SubFolders
For Each f1 in fc
s = s & f1.name
s = s & "|"
Next
下面来试一试为web站点建立一个搜索功能。
建立搜索引擎的关键是递归。主要地,编写一段代码搜索目录下的文件,然后对所有的目录循环执行同样的代码。因为不能确定总共有多少个子目录,所以必须一遍又一遍地执行搜索代码,直到结束。递归调用非常好!
下面来创建搜索页面。假设已经建立了一个HTML表单,用户在其中输入一个搜索字符串。
Dim objFolder
|
上面的代码简单地初始化变量,Search函数执行搜索功能,描述如下:
Function Search(objFolder) '在当前文件夹下循环每一个文件 '将文件夹的内容写到变量里 '循环语句,循环目录下的字文件加,并运行Search function |
上面的代码将在你指定的初始目录下的文件夹的每一个子目录中执行,在这里,初始目录是指web根目录“/”。然后就简单地打开目录下的每一个文件,看看其中是否包含指定的字符串,如果找到字符串就显示那个文件的链接。