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

2.3.4 从文件读取数据

读取文件,可以使用LoadFromFile方法,它只有一个参数,就是文件路径。该方法会抛弃Stream对象中原有的数据,它们占据的空间也被收回,从文件读入的数据有多大,Stream就有多大。执行该方法后,指针会自动指向位置0,即Position属性为0。

不管Stream对象的数据类型是文本还是二进制,从文件读入数据的过程中,都没有进行编码转换,数据是原样写入Stream对象的。

下面看一下例子,例子中所用的LoadFromFile.txt中只有“編碼”两个字,文件以GBK编码保存。

LoadFromFileByText.asp

<%@codepage=936%>
<! --#include File="getMemoryFormat.asp" -->
<%
Response.Charset="GBK"

Dim stream
Set stream = Server.CreateObject("ADODB.Stream")   '建立Stream对象
stream.Type = 2             '文本方式
stream.Charset = "GBK"
stream.Open

'读入文件内容
stream.LoadFromFile Server.MapPath("LoadFromFile.txt")

'输出所有内容(不必移动指针)
response.write stream.ReadText

'看看数据的二进制形式
stream.Position=0           '移动指针到位置0
stream.Type = 1             '二进制方式
response.write getMemoryFormat(stream.Read)

stream.close
Set stream = nothing
%>

运行结果如图2-19所示。

图2-19 从文件读取数据

可以看到,Stream对象中保存的正是“編碼”两个字的GBK编码。保持txt文件不变,修改Stream对象的Charset,可以总结出表2-11。

表2-11 不同Charset的结果

从表可以看出,Stream中的数据在几种情况下都与txt文件内容一致,只是Charset为Unicode和UTF-8时,被自动加了前缀。处理方式为二进制时,则不会自动加前缀。所以,推荐以二进制方式载入文件。