asp 之FSO

1、在ASP中,FSO的意思是File System Object,即文件系统对象。
  我们将要操纵的计算机文件系统,在这里是指位于web服务器之上。所以,确认你对此拥有合适的权限。理想情况下,你可以在自己的机器上建立一个web服务器,这样就能方便地进行测试。
 
       FSO 模型对象

   Drive Object:驱动器对象 供存取磁盘或者网络驱动器
   FileSystemObject Object:文件系统对象 供存取计算机的文件系统
   Folder Object:文件夹对象 供存取文件夹的所有属性
   TextStream Object:文本流对象 供存取文件内容
2、怎么样使用FSO?

  为了使用FSO来执行所有的工作,首先要创建对象,代码就象下面这样:

< % Set fso = Server.CreateObject("Scripting.FileSystemObject") % >
这样就建立了FSO并且赋予变量fso,接着就可以使用熟悉的object.method语法来执行文件系统的操作
这里有一个简要的FSO方法列表:

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
Dim strSearchText
Dim objFSO


'search string
strSearchText = Request.Form("SearchText")
' 创建FSO and Folder objects
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath("/"))

Search objFolder


  上面的代码简单地初始化变量,Search函数执行搜索功能,描述如下:

Function Search(objFolder)

Dim objSubFolder

'在当前文件夹下循环每一个文件

For Each objFile in objFolder.Files
 Set objTextStream = objFSO.OpenTextFile(objFile.Path,1)

    '将文件夹的内容写到变量里

 strFileContents = objTextStream.ReadAll 

   '如果查找的字符串在文件里,然后在文件里写link

 If InStr(1, strFileContents, strSearchText, 1) then

  Response.Write "< A HREF="../../"/" & objFile.Name & _

   """>" & objFile.Name & "< /A>< BR>"
  bolFileFound = True
 End If
 objTextStream.Close
Next

'循环语句,循环目录下的字文件加,并运行Search function

For Each objSubFolder in objFolder.SubFolders
 Search objSubFolder
Next

End Function

 

 

       为了能打开文件,FSO需要实际的文件路径,而不是web路径。比如,是c:inetpubwwwroot empindex.HTML, 而不是www.enfused.com/temp/index.HTML 或者 /temp/index.HTML。 为了将后者转换为前者,使用Server.MapPath("filename"), filename表示web路径名。

  上面的代码将在你指定的初始目录下的文件夹的每一个子目录中执行,在这里,初始目录是指web根目录“/”。然后就简单地打开目录下的每一个文件,看看其中是否包含指定的字符串,如果找到字符串就显示那个文件的链接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值