日期:2009-10-13  浏览次数:20949 次

翻译 讨饭猫

很久以前(其实就几个月)就知道 ChinaASP 有个实际效果象黑客的ASE程序,最近 ChinaASP 又提供了精华区全文检索功能。看来文件系统对象组件还是很有用的,对吧?如果你对此有兴趣,可以看看这篇文章。本文属入门级,修行还靠你自己,呵呵。


注意:我们在下文中要操作的是Web服务器的文件系统,所以首先要确定你对该服务器有足够的权限。如果你不想麻烦你的Web Master,你也可以用微软的Personal Web Server来进行你的试验。

FSO对象包括
驱动器对象(Drive Object)用来存取本地盘或网络盘,
文件系统对象(FielSystemObject 简称FSO)是用来存取文件系统
文件夹对象(Folder Object)用于存取文件夹的各种属性
文本流对象(TextStream Object 简称TS)存取文件内容

使用以上对象,你的确可以在一台电脑上为所欲为,但同样也可能会造成灾难,所以在使用FSO的时候要注意安全,特别是在Web应用中,Web服务器中会存储诸如用户信息,日志文件等等重要信息,更要格外小心。在本文中,我们主要探讨FSO对象和TextStream对象

(FSO由Microsoft提供,所以本文内容只适用于Windows操作系统下的ASP编程。)



如何使用FSO?

要开始干坏事之前,首先要学会建立FSO。如果你曾经在ASP中创建过对象,那么这事好办:

<%
Set fso = Server.CreateObject("Scripting.FileSystemObject")
%>

现在我们已经建立了FSO,并赋值给变量fso,接下来就可以使用我们熟悉的object.method方法来使用它了(如果你对对象的操作不熟悉,请自己去补课,这里恕不奉陪)。在下面的例子中,主要使用的是fso.method和fso.property。

(FSO模块来自微软提供的脚本运行库scrrun.dll中,许多应用系统都会调用它,例如Access,word等等,并非专为ASP应用开发。)

下面是我们要用到的部分FSO方法:

CopyFile         拷贝一个或多个文件
CreateTextFile     创建一个文件并返回一个TS对象
DeleteFile         删除一个文件
OpenTextFile     打开一个文件并返回一个可用于读和添加的TS对象。

要获得完整的FSO方法,请参看MSDN。下面看个例子吧。



写文件

设想你要建立一个简单的guestbook,而又不想用复杂的数据库,或者你的ISP限制你用数据库,大可以用FSO来干。
假设你要从用户提交的form中收集信息,HTML这样写.

<HTML>
<body>
<form action="formhandler.ASP" method="post">
<input type="text" size="10" name="username">
<input type="text" size="10" name="homepage">
<input type="text" size="10" name="Email">
</form>
</body>
</HTML>

再看看用于处理这个form的formhandler.ASP。

<%
' 获取 form信息
strName = Request.Form("username")
strHomePage = Request.Form("homepage")
strEmail = Request.Form("Email")

' 建立fso对象
Set fso = Server.CreateObject("Scripting.FileSystemObject")

path = "c:\temp\test.txt"
ForReading = 1, ForWriting = 2, ForAppending = 3

' 打开文件
set file = fso.opentextfile(path, ForAppending, TRUE)

' 把信息写入文件
file.write(strName) & vbcrlf
file.write(strHomePage) & vbcrlf
file.write(strEmail) & vbcrlf

' 关闭并清除对象
file.close
set file = nothing
set fso = nothing

看看上面,OpenTextFile方法返回了一个TS对象,TS对象提供了例如Write,ReadLine,SkipLine等一系列的方法来操作文件内容。VB常量vbcrlf是换行符。

(我们在OpentextFile方法中指定了TRUE参数,通知系统当文件不存在时生成一个新文件。如果不用TRUE,当文件不存在时就会返回一个难看的错误提示。)

现在打开c:\temp\test.txt,你可以看到如下信息:

User's name
User's home page
User's email

当然,实际内容是用户的输入。哈,一个简单的guestbook诞生啦。



读文件

好,现在我们的guestbook里已经存储了不少用户的信息了,如果这时一个用户想看看我们访客的信息,我们得把信息再还原出来。由于不是数据库,得自己动手来解决分段问题。看看test.txt,每三行就是一个用户的信息,好办:

<%
' 建立fso对象
set fso = Server.Createobject("Scripting.FileSystemObject")
path = "c:\temp\test.txt"

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

do until file.AtEndOfStream
 &nbs