ADODB.stream

1、ADODB.stream对象
FilesystemObject的OpenTextFile 默认会用系统的编码读取文本,默认一般都是ANSI(通常我们称为ASCII字符)
FilesystemObject的OpenTextFile 只能读取Unicode和ANSI的编码的文件。
对于UTF-8编码的文本文件FilesystemObject
但是ADODB.stream可以读取utf-8和其它编码的文 件
ADODB.stream对象的文件路径C:\Program Files\Common Files\System\ado\msado15.dll
2、ADODB.stream对象的方法
2.1、open
打开 Stream 对象来操作二进制或文本数据的流。

语法:Stream.Open Source, Mode, OpenOptions, UserName, Password

参数Source:

Source可选, Variant 值,指定 Stream 的数据源。
Source 可能包含绝对 URL 字符串,该字符串指向某个众所周知的树状结构(如电子邮件或文件系统)中现有的节点。
应使用 URL关键字(“URL=http://server/folder”)来指定 URL。
另外,Source 也可包含对已打开的 Record 对象的引用,该对象打开与 Record 相关联的默认流。
如果未指定 Source,Stream 将被实例化并被打开,默认情况下它不与基本源相关联。
参数Mode:

可选。
ConnectModeEnum 值,指定得出的 Stream 的访问模式(例如,读/写或只读)。
默认值为 adModeUnknown。
有关访问模式的详细信息,请参阅 Mode 属性。如果未指定 Mode,它将被源对象继承。
例如,如果以只读模式打开源 Record,那么默认情况下 Stream 也将以只读模式打开。
参数列表:
adModeRead =1
adModeReadWrite =3
adModeRecursive =4194304
adModeShareDenyNone =16
adModeShareDenyRead =4
adModeShareDenyWrite =8
adModeShareExclusive =12
adModeUnknown =0
adModeWrite =2
参数OpenOptions:

可选。
StreamOpenOptionsEnum 值。默认值为 adOpenStreamUnspecified。
adOpenStreamAsync =1
adOpenStreamFromRecord =4
adOpenStreamUnspecified=-1
参数UserName:

可选。String 值,包含(在需要时)访问 Stream 对象的用户标识。
参数Password:

可选。String 值,包含(在需要时)访问 Stream 对象的密码。
说明

当把 Record 对象作为源参数传递时,将不使用 UserID 和 Password 参数,因为这样就已经可以访问 Record 对象。与之类似,Record 对象的 Mode 也被传递给 Stream 对象。
如果未指定 Source,打开的 Stream 将不包含数据,并且其 Size 为零 (0)。

当 Stream 关闭时,要避免丢失任何写入此 Stream 的数据,请用 CopyTo 或 SaveToFile 方法保存 Stream,或将其保存到另一个内存位置。

Stream 未打开时,有可能读取 Stream 的所有只读属性。

如果异步打开 Stream,所有后续的操作(除了检查 State 和其他只读属性)都将被阻塞,直到 Open 操作完成为止。

2.2、close
关闭打开的对象和任何相关的对象。

2.3、Write 方法
将二进制数据写入 Stream 对象。
语法:Stream.Write Buffer
参数
Buffer Variant,包含要写入的字节数组。
2.4、WriteText 方法
将指定的文本字符串写入 Stream 对象。

语法:Stream.WriteText Data, Options

参数

Data String 值,包含要写入的字符文本。
Options 可选。
StreamWriteEnum 值,指定是否在指定字符串的结尾写入分行符字符。
adWriteChar =0
adWriteLine =1
2.5、Read 方法
从二进制 Stream 对象读取指定的字节数。
语法:Variant = Stream.Read ( NumBytes )
参数
NumBytes 可选。Long 值,指定要从文件或 StreamReadEnum 值 adReadAll(默认值)读取的字节数。
返回值
Read 方法从 Stream 对象读取指定的字节数或整个流,并以 Variant 形式返回所得到的数据。
说明
如果 NumBytes 超过 Stream 中剩余的字节数,将只返回剩余的字节。数据读取没有被填充到与 NumBytes 指定的长度一致。
如果没有剩余的字节可读取,将返回一个值为 Null 的变体。Read 不能用于向后读取。
注意 NumBytes 始终度量字节。对于文本Stream 对象,请使用 ReadText。
2.6、ReadText 方法
从文本 Stream 对象读取指定数目的字符。
语法
String = Stream.ReadText ( NumChars )
参数
NumChars 可选。Long 值,指定要从文件读取的字符数,或 StreamReadEnum 值。默认值为 adReadAll。
返回值
ReadText 方法从 Stream 对象中读取指定数目的字符、整个行或整个流,并返回所得到的字符串。
说明
如果 NumChar 超过流中剩余的字符数,将只返回剩余的字符。
读取的字符串没有被填充到与 NumChar 指定的长度一致。
如果没有剩余的字符可读取,将返回一个值为 Null 的变体。
ReadText 不能用于向后读取。
ReadText 方法与文本流(Type 为 adTypeText)一起使用。对于二进制流,请使用 Read。
2.7、Flush 方法
将保留在 ADO 缓冲区中的 Stream 的内容强加到与 Stream 相关联的基本对象。

语法
Stream.Flush
说明
此方法可用于将流缓冲区的内容发送到 URL(Stream 对象源)表示的基本对象。
要确保对 Stream 内容所做的所有更改都被写入,应调用此方法。
但是使用 ADO 时一般不必调用 Flush,因为 ADO 尽可能在后台不断刷新其缓冲区。
Stream 内容的更改将自动进行,在调用 Flush 前不会被缓存。
用 Close 方法关闭 Stream 将自动刷新 Stream 的内容,而无需在 Close 之前显式地调用 Flush。
2.8、CopyTo 方法
将 Stream 中指定数目的字符或字节(取决于 Type)复制到另一个 Stream 对象。

语法
Stream.CopyTo DestStream, NumChars
参数
DestStream 对象变量值,包含打开的 Stream 对象的引用。将当前 Stream 复制到由 DestStream 指定的目标 Stream。目标 Stream 必须已打开。否则,将发生运行时错误。
注意 DestStream 参数可能不会成为 Stream 对象的代理,因为这将需要访问 Stream 对象上无法与客户远程连接的专用接口。
NumChars 可选。Integer 值,指定要从源 Stream 中的当前位置复制到目标 Stream 的字节或字符数目。默认值为 –1,它指定将所有字符或字节从当前位置复制到 EOS。
说明
此方法从 Position 属性指定的当前位置开始,复制指定数目的字符或字节。如果指定的数目超过可用的数目(即超过 EOS),那么只复制当前位置到 EOS 之间的字符或字节。如果省略 NumChars 值或其值为 –1,将复制从当前位置开始的所有字符或字节。
如果在目标流中存在现有字符或字节,超过复制结束位置的所有内容将保留,不会被截断。Position 成为紧跟在复制的最后一个字节后面的字节。如果要截断这些字节,请调用 SetEOS。
应使用 CopyTo 将数据复制到与源 Stream 同类型的目标 Stream(两者的 Type 属性设置都是 adTypeText,或者都是 adTypeBinary)。对于文本 Stream 对象,可以更改目标 Stream 的 Charset 属性设置以进行字符集间的转换。还可以将文本Stream 对象成功地复制到二进制 Stream 对象中,但却不能将二进制 Stream 对象复制到文本 Stream 对象中。
2.9、SkipLine 方法
读取文本流时跳过一整行。

语法
Stream.SkipLine
说明
到(包括)下一个分行符之间的所有字符都被跳过。默认情况下,LineSeparator 为 adCRLF。如果试图跳过超出 EOS 的位置,那么当前位置将保持在 EOS 处。
SkipLine方法与文本流(Type 为 adTypeText)一起使用。
2.10、LineSeparator 属性
指示要在文本Stream 对象中用作分行符的二进制字符。

设置和返回值
设置或返回 LineSeparatorsEnum 值,指示用在 Stream 中的分行符。默认值为 adCRLF。
说明
读取文本 Stream 的内容时,LineSeparator 用于解释行。可以用SkipLine方法跳过行。
LineSeparator 只能与文本 Stream 对象(Type 为 adTypeText)一起使用。如果 Type 为 adTypeBinary,则忽略此属性
2.11、EOS 属性
指示当前位置是否在流的结尾处。

返回值
返回 Boolean 值,指示当前位置是否在流的结尾处。如果流中没有其他字节,则 EOS 返回 True;如果当前位置后还有其他字节,则返回 False。
若要设置流的结尾位置,请使用 SetEOS 方法。若要确定当前位置,请使用 Position 属性。
2.12、SetEOS 方法
设置流的结尾位置。

语法
Stream.SetEOS
说明
SetEOS 通过使当前 Position 成为流的结尾来更新 EOS 属性的值。当前位置后面的所有字节或字符都将被截断。
由于 Write、WriteText 和 CopyTo 不截断现有 Stream 对象中多余的值,因此可以通过用 SetEOS 设置新的流结尾位置来截断这些字节或字符。
警告 如果将 EOS 设置到流的实际结尾前面的位置,那么新的 EOS 位置后面的所有数据都将丢失。
2.13、SaveToFile 方法
把 Stream 的二进制内容保存到文件。

语法
Stream.SaveToFile FileName, SaveOptions
参数
FileName String 值,包含要保存 Stream 内容的文件的完整名称。可以保存到任何有效的本地位置,或任何可以通过 UNC 值访问的位置。
SaveOptions SaveOptionsEnum 值,指定当文件不存在时 SaveToFile 是否创建新文件。默认值为 adSaveCreateNotExists。如果指定的文件不存在,可以用这些选项来指定产生错误。还可以指定 SaveToFile 覆盖现有文件的当前内容。
adSaveCreateNotExist =1
adSaveCreateOverWrite = 2 [1]
注意 如果覆盖现有的文件(设置 adSaveCreateOverwrite),SaveToFile 将截断原始文件中超出新 EOS 的所有字节。
说明
SaveToFile 可用于将 Stream 对象的内容复制到本地文件。Stream 对象的内容或属性不发生变化。调用 SaveToFile 之前,Stream 对象必须被打开。
此方法不更改 Stream 对象与其基本源的关联。Stream 对象将仍与原来的 URL 关联,该 URL 在 Stream 对象打开时就是其源。
完成 SaveToFile 操作后,流中的当前位置 (Position) 被设置到流的开始处 (0)。
2.14、LoadFromFile 方法
将现有文件的内容加载到 Stream 中。

语法
Stream.LoadFromFile FileName
参数
FileName String 值,包含要加载到 Stream 中的文件的名称。FileName 可以包含任何 UNC 格式的有效路径和名称。如果指定的文件不存在,将发生运行时错误。
说明
此方法可用于将本地文件的内容加载到 Stream 对象中。还可用于将本地文件的内容上载至服务器。
调用 LoadFromFile 之前 Stream 对象必须是打开的。此方法不改变 Stream 对象的绑定;它将仍旧绑定到原来打开 Stream 的 URL 所指定的对象。LoadFromFile 用从该文件中读取的数据覆盖 Stream 对象的当前内容。
Stream 中任何现有的字节都被该文件的内容覆盖。LoadFromFile 创建的 EOS 后跟随的任何原有和剩余的字节都将被截去。
在调用 LoadFromFile 后,当前位置将设置在 Stream 的开始处(Position 为 0)。
2.15、Charset 属性
指示用于转换文本 Stream 内容的字符集。

设置和返回值
设置或返回 String 值,该值指定用于转换 String 内容的字符集。默认值为“Unicode”。所允许的值是作为 Internet字符集字符串(例如,“iso-8859-1”,“Windows-1252”等)被传递到接口的典型字符串。有关系统支持的字符集字符串的列表,请参阅 Windows 注册表中 HKEY_CLASSES_ROOT\MIME\Database\Charset 的子键。
说明
在文本 Stream 对象中,文本对象存储为 Unicode。Charset 属性将用指定的字符集转换从 Stream 读取的数据。与之类似,以指定字符集写入 Stream 的数据被转换为 Unicode 以便存储在 Stream 对象中。
对于打开的 Stream,其当前 Position 须位于 Stream (0) 的开始处,这样才能设置 Charset。
Charset 只能与文本 Stream 对象(Type 为 adTypeText)一起使用。如果 Type 为 adTypeBinary,则忽略此属性。
2.16、Size 属性 (ADO Stream)
指示流的字节数。

返回值
返回 Long 值,指定流的字节数。默认值为流的大小,如果不知道流的大小,则该值为 -1。
说明
Size 只能与打开的 Stream 对象配合使用。
注意 Stream 对象中可以存储任意多个位,它仅受系统资源限制。如果 Stream 包含的位数超过 Long 值所能表示的位数,Size 将被截断因而不能精确表示 Stream 的长度。
2.17、Position 属性
指示在 Stream 对象中的当前位置。

设置和返回值
设置或返回 Long 值,指定流开始处到当前位置的偏移字节数。默认值为 0,表示流中的第一个字节。
说明
可将当前位置移动到流的结尾处后面的一点。如果在流结尾处以外的地方指定当前位置,Stream 对象的 Size 也将随之增加。所有以这种方式添加的新字节都将为 Null。
注意 Position 始终度量字节。对于使用多字节字符集的文本流,请将位置与字符大小相乘以确定字符数。例如,对于双字节字符集,第一个字符位置为 0,第二个字符位置为 2,第三个字符位置为 4,依此类推。
不能用负值更改 Stream 中的当前位置。只有正数才能用于 Position。
对于只读 Stream 对象,如果设置的 Position 值超过 Stream 的 Size,ADO 将不返回错误。这不会更改 Stream 的大小,也不会以任何方式改变 Stream 的内容。但是,应避免这种操作,因为它可能产生无意义 Position 值。
2.18、Type 属性 (ADO Stream)
指示 Stream 中包含的数据的类型(二进制或文本)。

设置和返回值
设置或返回 StreamTypeEnum 值,用于指定包含在 Stream 对象中的数据类型。默认值为 adTypeText。但如果二进制数据最初被写入新的空 Stream 中,Type 将被更改为 adTypeBinary。
adTypeBinary =1
adTypeText =2
说明
只有在当前位置位于 Stream 的开始处(Position 为 0)时,Type 属性才为读/写;位于其他位置时均为只读。
2.19、State 属性
对所有适用的对象,指示该对象状态是打开的还是关闭的。
指示对所有可应用的对象执行异步方法,指示对象的当前状态是正在连接、正在执行还是正在检索。

返回值
返回可能是 ObjectStateEnum 值的 Long 值。默认值为 adStateClosed。
说明
可以随时用 State 属性确定给定对象的当前状态。
对象的 State 属性可以是值的组合。例如,如果正在执行某个语句,此属性将有一个 adStateOpen 和 adStateExecuting 的组合值。
State 属性为只读。
2.20、Mode 属性
指示在 Connection、Record 或 Stream 对象中修改数据的有效权限。

设置和返回值
设置或返回 ConnectModeEnum 值。对于 Connection,默认值为 adModeUnknown。对于 Record 对象,默认值为 adModeRead。对于与基本源相关联的 Stream(用 URL 将其作为源打开或者作为 Record 的默认 Stream 打开),默认值为 adReadOnly。对于与基本源不关联的 Stream(在内存中实例化),默认值为 adModeUnknown。
说明
使用 Mode 属性设置或返回当前连接上提供者使用的访问权限。只有当 Connection 对象关闭时,才能设置 Mode 属性。
对于 Stream 对象,如果未指定访问模式,它将从用于打开 Stream 对象的源继承。例如,如果 Stream 是从 Record 对象打开的,默认情况下它将以打开 Record 对象相同的模式打开。
此属性在对象关闭时为读/写,在对象打开时为只读。
远程数据服务用法 当在客户端的 Connection 对象上使用时,Mode 属性只能设置为 adModeUnknown。
————————————————
版权声明:本文为CSDN博主「一株禾」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chuhe163/article/details/103549144

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值