组件:"Adodb.Stream"有下列方法:Cancel 方法使用方法:Object.Cancel 说明:取消执行挂起的异步 Execute 或 Open 方法的调用。Close 方法 使用方法:Object.Close 说明:关闭对像。CopyTo 方法使用方法:Object.CopyTo(destStream,[CharNumber]) 说明:将对像的数据复制,destStream指向要复制的对像,CharNumber为可选参数,指要复制的字节数,不选为全部复制。Flush 方法使用方法:Object.Flush 说明:立即发送缓冲区中的输出。如果在ASP页上调用Flush方法,则服务器将响应该页上保持活动的请求。LoadFromFile 方法使用方法:Object.LoadFromFile(FileName)说明:将FileName指定的文件装入对像中,参数FileName为指定的用户名。Open 方法使用方法:Object.Open(Source,[Mode],[Options],[UserName],[Password])说明:打开对像。参数说明:1、Sourece 对像源,可不指定。2、Mode 指定打开模式,可不指定,可选参数如下:adModeRead =1 (只读)adModeReadWrite =3 (读写)adModeRecursive =4194304 (递归)adModeShareDenyNone =16adModeShareDenyRead =4adModeShareDenyWrite =8adModeShareExclusive =12adModeUnknown =0adModeWrite =2 (只写)3、Options 指定打开的选项,可不指定,可选参数如下:adOpenStreamAsync =1adOpenStreamFromRecord =4adOpenStreamUnspecified=-14、UserName 指定用户名,可不指定。5、Password 指定用户名的密码。Read 方法使用方法:Object.Read(Numbytes)说明:读取指定长度的二进制内容。参数说明:Numbytes指定的要读取的长度,不指定则读取全部。ReadText 方法使用方法:Object.ReadText(NumChars)说明:读取指定长度的文本。参数说明:NumChars指定的要读取的长度,不指定则读取全部。SaveToFile 方法使用方法:Object.SaveToFile(FileName,[Options])说明:将对像的内容写到FileName指定的文件中。参数说明:FileName指定的文件。Options 存取的选项,可不指定,可选参数如下:adSaveCreateNotExist =1adSaveCreateOverWrite =2SetEOS 方法使用方法:Object.setEOS()说明:将当前位置设置为记录流的末尾[EOS]。这个方法也可以用来更新EOS属性。SkipLine 方法使用方法:Object.SkipLine()说明:读取文件时,跳过下一行。Write 方法使用方法:Object.Write(Buffer)说明:将指定的数据装入对像中。参数说明:Buffer 为指定的要写入的内容。WriteText 方法使用方法:Object.Write(Data,[Options])说明:将指定的文本数据装入对像中。参数说明:Data 为指定的要写入的内容。Options 写入的选项,可不指定,可选参数如下:adWriteChar =0adWriteLine =1
组件有下列属性: CharsetEOS 返回对像内数据是否为空。 LineSeparator 指定换行格式,可选参数有:adCR =13adCRLF =-1adLF =10Mode 指定或返加模式。Position 指定或返加对像内数据的当前指针。Size 返回对像内数据的大小。State 返加对像状态是否打开。Type 指定或返回的数据类型,可选参数为:adTypeBinary =1 (返回二进制)adTypeText =2 (返回文本)
应用实例:
使用adodb.stream的地方很多,这里只讲一讲使用adodb.stream组件替代FSO实现读取文件的方法(网上流行的一些无组件上传程序全部基于这个写成的)。1 On Error Resume Next2 Set stream=Server.CreateObject("Adodb.Stream")3 If Err.Number=-2147221005 Then 4 Response.Write "<div align='center'>非常遗憾,您的主机不支持ADODB.Stream,不能使用本程序</div>"5 Err.Clear6 Response.End7 End If8 stream.type=29 stream.mode=310 stream.open11 dim filepath12 filepath="a.txt"13 stream.LoadFromFile Server.Mappath(filepath)14 If Err.Number<>0 Then15 Response.Write "<div align='center'>文件<font color='#ff0000'>"&Filepath&"</font>无法被打开,请检查是否存在!</font></div>"16 Err.Clear17 Response.End18 End If19 stream.Charset="gb_2312"20 stream.position=221 dim loadfile22 loadfile=steam.readtext23 stream.close24 set stream=nothing到这里读出的工作就完成了。下面来一句一句的解释:第一句:在遇到错误的时候假定到下一行,也就是如果错误不中断程序,从下一句继续执行。第二句:创建stream对象。3-7句:进行错误判断,可以不写。8-9句:分别设置stream对象,返回数据的类型和打开模式。type属性:设置stream对象返回的数据类型。“1”返回二进制,“2”返回文本。mode属性:打开模式。“1”只读,“2”只写,“3”读写。还有其它一些值,这里就不写了。10句:打开对象。只有打开对象,以后的方法如loadFromFile才能使用。11-13句:使用loadFromFile,将文件“a.txt”里的内容读入stream对象里(注意是读入这个对象中,并没有另开一个变量空间)。14-18句:错误判断。19句:Charset设置返回数据类型的编码格式,这里设的是简体中文。20句:Position设置文件读取的当前指针位置,也就是当前指向的是第几个字符。21-22句:使用readtext的方法将对象里的内容(就是先前用LOADFROMFILE读进来的内容)写入loadfile变量。23-24句:关闭和销毁对象。
当然,这只是读取。要想将其内容写入一个文件,可以使用savetofile(filename,[adsavecreatenotexist|adsavecreateoverwrite])要想往其内容里写入新内容,可以使用write(buffer)和writetext(data,[adwritechar|adwriteline])将一个对象的内容复制到另一个对象里,可以使用Object.CopyTo(destStream,[CharNumber])。其中destStream为另一对象,charnumber为要复制文件的大小(字符数),省略该参数即为全部复制。