我正在成功运行以下代码,以逐行向浏览器显示文本文件:
<%
Filename = "/pages/test.txt"
Set FSO = server.createObject("Scripting.FileSystemObject")
Filepath = Server.MapPath(Filename)
Set file = FSO.GetFile(Filepath)
Set TextStream = file.OpenAsTextStream(1, -2)
Do While Not TextStream.AtEndOfStream
Line = TextStream.readline
Response.Write Line & "<br>"
Loop
Set TextStream = nothing
Set FSO = nothing
%>
我想在
Do While Not TextStream.AtEndOfStream
语句之前再运行一次Set TextStream = nothing
循环。事实证明,我不能“仅仅”复制
Do While
循环并将其放置在第一个实例下面。 TextStream
不再有结果。有没有一种方法可以将
TextStream
对象重置回流的开头?我可以将行存储在数组中并加以利用,但我想看看是否有更简单的方法。
最佳答案
不幸的是,无法将指针手动定位在TextStream
对象中。您可以Close
TextStream
并重新打开它。或者,您可以按照暗示将文件一次读入数组。考虑到您要将整个文件输出到网页上,我假设它的大小不是非常大,因此,将其存储在数组中不会占用太多内存。
' Create an array containing each line from the text file...
a = Split(file.OpenAsTextStream(1, -2).ReadAll(), vbCrLf)
For i = 0 To UBound(a)
Response.Write a(i) & "<br>"
Next
' Repeat the process...
For i = 0 To UBound(a)
Response.Write a(i) & "<br>"
Next
您甚至可以用
<br>
替换行尾,并在一个操作中将其写入:strText = Replace(file.OpenAsTextStream(1, -2).ReadAll(), vbCrLf, "<br>")
Response.Write strText
Response.Write strText ' Write it again