我正在成功运行以下代码,以逐行向浏览器显示文本文件:

<%
    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

10-06 15:19