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

2.3.6 保存到文件

我们可以使用SaveToFile方法将流中的数据保存到文件,格式如下:

objStream.SaveToFile 文件路径,参数

参数的可选值是1和2,前者是默认的,指文件不存在则自动创建,后者指文件已存在则覆盖它。如果参数使用1,而文件已经存在的话,则运行会报错。

不管处理方式是文本形式还是二进制形式,SaveToFile方法都会忠实地将数据以二进制的形式写入文件,不会进行任何转换,数据流是什么样子,文件中就是什么样子。调用此方法后,指针会自动指向位置0。

下面看一下范例。

SaveToFile.asp

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

Dim stream
Set stream = Server.CreateObject("ADODB.Stream")
stream.Type = 2 '文本方式
stream.Charset = "GBK"
stream.Open
stream.WriteText "編碼"
'变更Charset,输出看一下
stream.Position=0
stream.Charset = "BIG5"
response.codepage=950
response.write stream.ReadText & "<br>"

'保存到文件
stream.SaveToFile Server.MapPath("SaveToFile_Result.txt"),2
response.write stream.Position

stream.close
Set stream = nothing
%>

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

图2-23 保存到文件的范例

可以看到,屏幕上输出的是“?徨”,这是因为“編”字的编码是BE8E,在Big5中没有对应字符,“碼”字的编码是B461,在Big5中对应的是“徨”字。

以GB2312编码打开文件的显示结果如图2-24所示。实际文件中是正确的“編碼”二字,说明Charset并不会影响保存到文件中的数据,保存的过程中没有进行转换。但是文本方式时,Charset可能会影响前缀的写入,这一点前文已经提过了。

图2-24 以GB2312打开文件的显示结果