第三十四章 Objects - 流接口类

40 阅读1分钟

第三十四章 Objects - 流接口类

系统分配了固定数量的空间来保存字符串操作的结果。如果字符串表达式超过分配的空间量,则会导致<MAXSTRING>错误;参见字符串长度限制。

如果需要传递长度超过此限制的值,或者需要值可能超过此限制的属性,则使用流。流是一个对象,它可以包含一个大小大于字符串大小限制的值。(内部创建并使用临时Global来避免内存限制。)

可以在SQL中使用流字段。

注意:不能在Python中使用ObjectScript流字段。

流类

主要的流类使用由类中的 %Stream.Object 定义的通用流接口。通常使用流作为其他对象的属性,并保存这些对象。流数据可以存储在外部文件 IRIS Global文件中,具体取决于选择的类:

  • %Stream.FileCharacter%Stream.FileBinary 类用于写入外部文件的流。

(二进制流包含与%Binary 类型相同类型的数据,并且可以保存大型二进制对象,例如图片。字符流包含与%String类型相同类型的数据,旨在存储大量文字。)

  • %Stream.GlobalCharacter%Stream.GlobalBinary 用于存储在Global中的流。

要使用流对象,可以使用它的方法。例如,使用这些类的 Write() 方法将数据添加到流中,并使用 Read() 从中读取数据。流接口还包括其他方法,例如 Rewind()MoveTo()

示例

例如,以下代码创建一个Global字符流并向其中写入一些数据:

 Set mystream=##class(%Stream.GlobalCharacter).%New()
 Do mystream.Write("here is some text to store in the stream ")
 Do mystream.Write("here is some more text")
 Write "this stream has this many characters: ",mystream.Size,!
 Write "this stream has the following contents: ",!
 Write mystream.Read()