虽然使用ASP有几年的时间了,但对ASP网络编程的了解和掌握还停留在初中阶段,一些不太常用的操作没有接触过,自然也没有学会。就拿ASP处理数据而言,用ASP连接数据库是网站开发的必备,这个当然是已经掌握的了。但使用ASP操作文件,恐怕使用频率就没那么高了。今年早些时候,学会了利用ASP的XMLHTTP和FSO组件进行网页内容获取和静态网页的生成,以及一般文件的移动、复制和删除等操作。
但对于如何读取纯文本文件(txt)中的内容,却一直没有很好地掌握。应该说,很多时候,txt文件使我们存放少量信息,存放一些使用频率较高信息的常用方法,毕竟比起数据库操作,要简单、方便、快捷。今天就用到了从txt文件中逐行读取邮件地址这样的问题,通过请教百度师父,得到了相应的方法,特地贴出来存档,以备今后查看。
set fs=Server.CreateObject("Scripting.FileSystemObject")
txtfile=Server.MapPath("a.txt")
set a=fs.OpenTextFile(txtfile)
while not a.AtEndOfStream
response.write(a.Readline&"<br />")
wend
a.close
上述代码的结果就是讲a.txt文件中的数据逐行显示到网页中。当然,如果你逐行读取数据的目的是有其他用途,而非单纯地显示到网页前台,那么在response.write这里执行相应的功能即可。在本例中,代码中提到的的a.txt文件,应该与该程序文件处于同一目录下。
此外,还有两外一种代码写法,和上例代码有所差异,但功能是一样的,如下所示:
Dim Fso
Dim myFile
Set Fso = Server.CreateObject("Scripting.FileSystemObject")
Set myFile = Fso.OpenTextFile(Server.MapPath("a.txt"),1,True)
'A.TXT和ASP程序在同个目录下,如果没在一个目录,可以用绝对路径,把上一行的a.txt改为:d:\a.txt
While Not myFile.AtEndOfStream
Response.Write myFile.ReadLine & "<BR>"
Wend
myFile.Close
Set myFile = Nothing
Set Fso = Nothing
本例中,代码中增加了对象的关闭(即close)方法,是比较规范、完整的程序代码编写规则,上例中进行了省略。除此之外,本例中的OpenTextFile()方法也较上例不同,增加了两个参数:“1”和“true”。
其实对于大神来说,上述两段代码是完全一致的,只是细节之处有所差异,本质上用到的是相同的原理和方法。作为刚入门的小白,乍一看到确有种两种方式的错觉。
此外,除了逐行读取并显示txt中的数据外,还可以对txt中的全部数据进行一次读取,这种当然更为简单,代码如下:
set fs=server.createobject("scripting.filesystemobject")
filetxt=server.mappath("a.txt")
set txt=fs.opentextfile(filetxt,1,true)
if not txt.atendofstream then
line=txt.ReadAll
response.write line & "<br>"
end if
本例中的txt.ReadAll方法即为读取txt中的全部数据并赋予line变量。
总结如下:
如果想读取文件中的所有数据,则需要使用:line=txt.ReadAll
如果想从文件中读取一行数据,则需要使用:line=txt.ReadLine
如果想从文件中读取N个字节的数据,则需要使用:line=txt.Read(N)