上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打开文件的显示结果