深入解析ASP核心技术
上QQ阅读APP看书,第一时间看更新

1.7.2 文件操作

表1-9列出了文件常用操作方法。

表1-9 文件常用操作方法

1. 创建文本文件

创建文本文件,可以使用FSO对象或Folder对象的CreateTextFile方法,格式如下:

fso.CreateTextFile(文件名,是否覆盖同名文件,是否使用Unicode编码)

后两个参数可以省略,它们默认都为False。该方法返回的是一个TextStream对象,可以通过它对文本文件进行操作,具体使用方法请参见1.7.3节。

下例将在当前目录下创建一个名为FileCreateTest.txt的文件。

FileCreate.asp

<%@codepage=936%>
<%
Response.Charset = "GBK"

'当前目录下的FileCreateTest.txt
filePath = Server.MapPath(".") & "\FileCreateTest.txt"

Set fso = CreateObject("Scripting.FileSystemObject")

'创建文本文件(覆盖同名文件,使用Unicode编码)
Set txtFile = fso.CreateTextFile(filePath, True, True)

'写入数据,并关闭
txtFile.WriteLine("Hello World.")
txtFile.Close

Set fso = Nothing
%>

如果不使用Unicode编码,则将使用系统默认为编码。如果是英文系统,使用WriteLine写入中文的话,程序将报错。

另外,FSO不支持二进制文件的读写。

2. 复制文件、移动文件和删除文件

文件的复制、移动和删除与文件夹的操作是极其类似的,只是方法名和路径写法不同,所以不赘述,直接举例说明。

FileCopyMoveDelete.asp

<%@codepage=936%>
<%
Response.Charset = "GBK"

'当前目录下的FileTest.txt
filePathA = Server.MapPath(".") & "\FileTest.txt"
filePathB = Server.MapPath(".") & "\FileTest2.txt"
filePathC = Server.MapPath(".") & "\FileTest3.txt"

Set fso = CreateObject("Scripting.FileSystemObject")

'将FileTest.txt复制为FileTest2.txt
fso.CopyFile filePathA, filePathB, True      '覆盖同名文件

'将FileTest2.txt改名为FileTest3.txt
fso.MoveFile filePathB, filePathC

'删除FileTest3.txt
fso.DeleteFile filePathC, True               '强制删除只读文件

'下面通过File对象来操作
Set fileA = fso.GetFile(filePathA)
fileA.Copy filePathB, True                   '复制

Set fileB = fso.GetFile(filePathB)
fileB.Move filePathC                         '移动

Set fileC = fso.GetFile(filePathC)
fileC.Delete True                            '删除

Set fso = Nothing
%>

3. 打开文本文件

打开已经存在的文本文件,可以使用FSO对象的 OpenTextFile方法或File对象的OpenAsTextStream方法,格式如下:

fso.OpenTextFile(文件路径,读写模式,是否创建新文件,使用的编码)
file.OpenAsTextStream(读写模式,是否使用Unicode编码)

参数“读写模式”的可选值如表1-10所示。

表1-10 “读写模式”的可选值

参数“使用的编码”的可选值如表1-11所示。

表1-11 “使用的编码”的可选值

参数“是否创建新文件”的默认值为False,如果为True,则文件不存在时会自动创建。

OpenTextFile方法和OpenAsTextStream方法返回的也是TextStream对象,可以通过它进行后续操作,具体使用方法请参见1.7.3节。

下例将创建一个文本文件,然后打开该文件,读取一行数据。

FileOpenTextFile.asp

<%@codepage=936%>
<%
Response.Charset = "GBK"

'当前目录下的FileOpenTest.txt
filePath = Server.MapPath(".") & "\FileOpenTest.txt"

Set fso = CreateObject("Scripting.FileSystemObject")

'打开文本文件(只读方式,不创建新文件,使用Unicode编码)
Set txtFile = fso.OpenTextFile(filePath,1, False, -1)

'读取一行数据,并关闭
Response.Write txtFile.ReadLine()
txtFile.Close

Set fso = Nothing
%>