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


</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
Response.write("Name: " & file.ReadLine & " ")
Response.write("Home Page: " & file.ReadLine & " ")
Response.write("Email: " & file.ReadLine & "<p>")
loop

' 关闭并清除
file.close
set file = nothing
set fso = nothing
%>

(这里我们只是将信息简单输出,你可以根据实际情况作调整,包括输出到表格和DHTML form中。)

ReadLine方法用于从文件中读取一行,下次调用ReadLine方法将读取下一行。AtEndOfStream是TS对象的一个属性,让你知道是否到达文件结尾。

假设由于某种原因文件有问题,例如某个用户只有两行,那么我们会得到以下错误信息:

Server object error 'ASP 0177 : 800a003e'

所以加入一些错误处理代码是必要的。



FSO的权限问题

现在我们已经对FSO有一些基本认识了,是时候来讨论一下FSO的权限问题。FSO的读取权限就是创建FSO的账号所拥有的权限。如果某人从Internet上使用这个页面,那么创建FSO的就是Internet账号。如果你用administrator本机登录并访问页面,那么建立的FSO就拥有administrator的权限。

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

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