第三十四章 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()