资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
平时我喜欢用 FSO 来操作文件,但是很郁闷的是我喜欢用 UTF-8 编码,而 FSO 没法写UTF-8 编码的,有时候就不得不用到 Stream 了。下面有 2 个非常典型的文本流函数,一个是用来读取文件内容的,一个是用来写文件的。下面是 Stream 的常见方法:Open 方法 (ADO Stream)打开 Stream 对象来操作二进制或文本数据的流。 语法 Stream.Open Source, Mode, OpenOptions, UserName, Password 参数 Source 可选。 Variant 值,指定 Stream 的数据源。Source 可能包含绝对 URL 字符串,该字符串指向某个众所周知的树状结构(如电子邮件或文件系统)中现有的节点。应使用 URL 关键字(“URL=http:/server/folder” )来指定 URL。另外,Source 也可包含对已打开的 Record 对象的引用,该对象打开与 Record 相关联的默认流。如果未指定 Source, Stream 将被实例化并被打开,默认情况下它不与基本源相关联。 Mode 可选。ConnectModeEnum 值,指定得出的 Stream 的访问模式(例如,读/写或只读) 。默认值为 adModeUnknown。有关访问模式的详细信息,请参阅 Mode 属性。如果未指定 Mode,它将被源对象继承。例如,如果以只读模式打开源 Record,那么默认情况下 Stream 也将以只读模式打开。 OpenOptions 可选。StreamOpenOptionsEnum 值。默认值为 adOpenStreamUnspecified。 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 操作完成为止。 Close 方法关闭打开的对象和任何相关的对象。 语法 object.Close 说明 使用 Close 方法关闭 Connection、Record、Recordset 或 Stream 对象以便释放任何相关联的系统资源。关闭对象不会将其从内存中删除;随后可以更改其属性设置并再次将其打开。要从内存中彻底清除对象,请在关闭对象后将对象变量设置为 Nothing(在 Visual Basic 中) 。 Connection 使用 Close 方法关闭 Connection 对象还将关闭与连接相关联的任何活动 Recordset 对象。与正在关闭的 Connection 对象相关联的 Command 对象将被持久保留,但不再与 Connection 对象相关联,即其 ActiveConnection 属性将被设置为 Nothing。还将从 Command 对象的 Parameters 集合中清除任何提供者定义的参数。 随后可以调用 Open 方法重新建立与相同数据源或其他数据源的连接。在 Connection 对象关闭后,调用任何需要与数据源打开连接的方法都将产生错误。 当连接上的 Recordset 对象打开时,关闭 Connection 对象将回卷所有 Recordset 对象中的挂起更改。在事务进行过程中显式关闭 Connection 对象(调用 Close 方法)将产生错误。如果在事务进行过程中 Connection 对象超出范围,ADO 将自动回卷事务。 Recordset、Record 和 Stream 使用 Close 方法关闭 Recordset、Record 或 Stream 对象将释放相关联的数据和可能通过此特定对象对数据进行的独立访问。随后可以调用 Open 方法重新打开具有相同属性或修改属性的对象。 在 Recordset 对象关闭后,调用任何需要活动游标的方法都将产生错误。 如果在立即更新模式下进行编辑,调用 Close 方法将产生错误,应先调用 Update 或 CancelUpdate 方法。如果在批更新模式下关闭 Recordset 对象,自上次 UpdateBatch 调用以来所做的更改将全部丢失。 如果使用 Clone 方法创建打开的 Recordset 对象的副本,关闭原 Recordset 或其副本不会影响任何其他副本。 Write 方法将二进制数据写入 Stream 对象。 语法 Stream.Write Buffer 参数 Buffer Variant,包含要写入的字节数组。 说明 指定的字节被写入 Stream 对象,每个字节之间没有间隔。 当前 Position 被设置为写入数据的后一个字节。Write 方法不会截断流中剩余的数据。如果要截断这些字节,请调用 SetEOS。 如果写入超过了当前 EOS 位置,Stream 的 Size 将增加以包含新的字节,EOS 也将移动到 Stream 中新的最后一个字节。 WriteText 方法将指定的文本字符串写入 Stream 对象。 语法 Stream.WriteText Data, Options 参数 Data String 值,包含要写入的字符文本。 Options 可选。StreamWriteEnum 值,指定是否在指定字符串的结尾写入分行符字符。说明 指定的字符串被写入 Stream 对象,每个字符串之间没有间隔空格或字符。 当前 Position 被设置为写入数据的后一个字节。 WriteText 方法不会截断流中剩余的数据。如果要截断这些字节,请调用 SetEOS。 如果写入超过了当前 EOS 位置,Stream 的 Size 将增加以包含新的字符,EOS 也将移动到 Stream 中新的最后一个字节。 Read 方法从二进制 Stream 对象读取指定的字节数。 语法 Variant = Stream.Read ( NumBytes ) 参数 NumBytes 可选。Long 值,指定要从文件或 StreamReadEnum 值 adReadAll(默认值)读取的字节数。 返回值 Read 方法从 Stream 对象读取指定的字节数或整个流,并以 Variant 形式返回所得到的数据。 说明 如果 NumBytes 超过 Stream 中剩余的字节数,将只返回剩余的字节。数据读取没有被填充到与 NumBytes 指定的长度一致。如果没有剩余的字节可读取,将返回一个值为 Null 的变体。Read 不能用于向后读取。 注意 NumBytes 始终度量字节。对于文本 Stream 对象,请使用 ReadText。 ReadText 方法从文本 Stream 对象读取指定数目的字符。 语法 String = Stream.ReadText ( NumChars ) 参数 NumChars 可选。Long 值,指定要从文件读取的字符数,或 StreamReadEnum 值。默认值为 adReadAll。 返回值 ReadText 方法从 Stream 对象中读取指定数目的字符、整个行或整个流,并返回所得到的字符串。 说明 如果 NumChar 超过流中剩余的字符数,将只返回剩余的字符。读取的字符串没有被填充到与 NumChar 指定的长度一致。如果没有剩余的字符可读取,将返回一个值为 Null 的变体。ReadText 不能用于向后读取。 ReadText 方法与文本流(Type 为 adTypeText)一起使用。对于二进制流,请使用 Read。 Flush 方法将保留在 ADO 缓冲区中的 Stream 的内容强加到与 Stream 相关联的基本对象。 语法 Stream.Flush 说明 此方法可用于将流缓冲区的内容发送到 URL(Stream 对象源)表示的基本对象。要确保对 Stream 内容所做的所有更改都被写入,应调用此方法。但是使用 ADO 时一般不必调用 Flush,因为 ADO 尽可能在后台不断刷新其缓冲区。 Stream 内容的更改将自动进行,在调用 Flush 前不会被缓存。 用 Close 方法关闭 Stream 将自动刷新 Stream 的内容,而无需在 Close 之前显式地调用 Flush。 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 对象中。 SkipLine 方法读取文本流时跳过一整行。 语法 Stream.SkipLine 说明 到(包括)下一个分行符之间的所有字符都被跳过。默认情况下,LineSeparator 为 adCRLF。如果试图跳过超出 EOS 的位置,那么当前位置将保持在 EOS 处。 SkipLine 方法与文本流(Type 为 adTypeText)一起使用。 LineSeparator 属性指示要在文本 Stream 对象中用作分行符的二进制字符。 设置和返回值 设置或返回 LineSeparatorsEnum 值,指示用在 Stream 中的分行符。默认值为 adCRLF。 说明 读取文本 Stream 的内容时,LineSeparator 用于解释行。可以用 SkipLine 方法跳过行。 LineSeparator 只能与文本 Stream 对象(
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号