在 ASP 中读取文本文件。






4.96/5 (13投票s)
如何在服务器上使用 VBScript 在 ASP 中读取文本文件。
在任何编程语言中最重要的一项任务之一是能够读取和写入文件。在 ASP 中涉及的步骤与许多其他语言没有不同。
- 指定文件位置
- 确定文件是否存在
- 获取文件句柄
- 读取内容
- 关闭文件并释放所有使用的资源
ASP 中的文件 I/O 可以使用 FileSystemObject 组件完成。打开文本文件时,只需将其作为文本流打开,然后使用该文本流来访问文件内容。
FileSystemObject 允许您执行所有文件和文件夹处理操作。它可以返回一个文件,然后将其作为文本流打开,也可以直接返回一个文本流对象。
在以下内容中,我将介绍两种不同的方法。第一种方法获取一个文件对象,并使用该对象打开文本流,第二种方法直接从 FileSystemObject 打开文本流。
方法 1
<% Option Explicit
Const Filename = "/readme.txt"    ' file to read
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
' Create a filesystem object
Dim FSO
set FSO = server.createObject("Scripting.FileSystemObject")
' Map the logical path to the physical system path
Dim Filepath
Filepath = Server.MapPath(Filename)
if FSO.FileExists(Filepath) Then
    ' Get a handle to the file
    Dim file    
    set file = FSO.GetFile(Filepath)
    ' Get some info about the file
    Dim FileSize
    FileSize = file.Size
    Response.Write "<p><b>File: " & Filename & " (size " & FileSize  &_
                   " bytes)</b></p><hr>"
    Response.Write "<pre>"
    ' Open the file
    Dim TextStream
    Set TextStream = file.OpenAsTextStream(ForReading, TristateUseDefault)
    ' Read the file line by line
    Do While Not TextStream.AtEndOfStream
        Dim Line
        Line = TextStream.readline
    
        ' Do something with "Line"
        Line = Line & vbCRLF
    
        Response.write Line 
    Loop
    Response.Write "</pre><hr>"
    Set TextStream = nothing
    
Else
    Response.Write "<h3><i><font color=red> File " & Filename &_
                       " does not exist</font></i></h3>"
End If
Set FSO = nothing
%>
方法 2
<% Option Explicit
Const Filename = "/readme.txt"    ' file to read
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
' Create a filesystem object
Dim FSO
set FSO = server.createObject("Scripting.FileSystemObject")
' Map the logical path to the physical system path
Dim Filepath
Filepath = Server.MapPath(Filename)
if FSO.FileExists(Filepath) Then
    Set TextStream = FSO.OpenTextFile(Filepath, ForReading, False, TristateUseDefault)
    ' Read file in one hit
    Dim Contents
    Contents = TextStream.ReadAll
    Response.write "<pre>" & Contents & "</pre><hr>"
    TextStream.Close
    Set TextStream = nothing
    
Else
    Response.Write "<h3><i><font color=red> File " & Filename &_
                   " does not exist</font></i></h3>"
End If
Set FSO = nothing
%>

