奇妙的文件系统对象组件(4)



Web目录管理就是在Web环境下进行文档的新建删除改名移动等工作,一个好的Web目录管理工具可以为用户提供一个与我们惯用的环境一样的操作方法来管理Web服务器上的文件。

那么先让我们来试试文件改名。首先要告诉大家,不幸得很,FSO不允许直接文件改名,所以我们要绕个弯进行。

<%
' 建立fso对象
set fso = Server.Createobject("Scripting.FileSystemObject")

path = "c:\temp\test.txt"
strDate = Replace(Date(), "/", "")
strDir = "c:\inetpub\wwwroot\articles\" & strDate

strNewFileName = Hour(Now) & "_" & Minute(Now) & "_" &second(Now) & ".html"

' 打开旧文件
set file = fso.opentextfile(path, 1) <-- 用于读
strText = file.readall
set file = nothing

' 检查是是否要建立文件夹
if not fso.folderexists(Server.MapPath(strDir)) then
set f = fso.CreateFolder(Server.MapPath(strDir))
else
set f = fso.GetFolder(Server.MapPath(strDir))
end if

' 创建并写入新文件
set file = fso.Createtextfile(f.path & "\" & strNewFileName)
file.write(strText)

set f = nothing
file.close
set file = nothing

' 删除旧文件
fso.DeleteFile(path & "\" & rst("FileName") & i)

' 清除
set fso = nothing
%>

我们在这里特别举这个例子就是因为FSO在这个功能上存在缺陷,所以我们必须分两步走。首先新建一个文件,注意,由于用户可能将文件改名到另一个目录下,所以我们必须判断新目录是否存在(就是if not fso.folderexists那段代码)。新文件建好后,用fso.DeleteFile 将旧文件删除。



FSO功能上的弱点

FSO还是存在一些弱点。例如,它在处理二进制文件的时候就不那么方便。对于象MS Word文档,图像等许多文件,你只能执行移动,删除等操作,而不能打开,读/写。当然,FSO提供了另外一套操作它们的方法(具体请参考MSDN),但始终不如我们惯用的open方法那么顺手。

另一个不足与文件大小有关。由于FSO操作需要经常地将文件内容读入内存,文件有多大,就需要多少内存,所以如果你要处理大文件或一大堆小文件的话,内存的开销会很可观,可能会对系统运行速度有影响。解决办法是将大文件分段处理,并记住经常地清除内存(把变量设为null或"",set 对象=nothing)。

此外,FSO不能改变文件和文件夹的属性。例如,在建立guestbook的例子中,其实有一个安全机制我们没有实现,就是将保存信息的文件的属性设为只读,只有在更新的时候才临时改为可写,写完后再改回只读,许多用CGI或Perl写的guestbook程序都有这种功能,可惜用FSO无法实现该功能。


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2910.html