DefineOutputStreamMethod

DefineOutputStreamMethod["name",{"fname1"function1,"fname2"function2, }]

定义一个具有指定名称的自定义输出流方法,使得 Wolfram 语言可以调用流函数,用于打开和读取输出流.

更多信息

  • 输出流方法可以提供字节的新来源,一种对字节流过滤的新方法,或者两者兼具.
  • 可以提供下列输出流函数:
  • "NameTestFunction"给定名称的流是否能被打开
    "ConstructorFunction"当打开一个新的流时调用
    "CloseFunction"关闭流并且释放它的资源
    "WriteFunction"对流写入字节
    "FlushFunction"确保在内存中缓存的字节写入流中
    "ErrorTextFunction"指明是否是一个错误
    "ClearErrorFunction"清楚错误提示
    "StreamPositionFunction"输入读取的流中的当前点
    "OptionChangesFunction"修改由 Options[stream] 返回的选项
  • 只有 "ConstructorFunction" 必须提供给 DefineOutputStreamMethod. 如果函数没有被提供,那么其他函数有一个默认的定义.
  • 使用流方法打开的每个 OutputStream 都有一个当前状态. 这里流方法可以把诸如句柄的信息存储到内在流资源、当前流为主、最新错误消息和流方法函数需要的其他信息. 初始状态表达式由 "ConstructorFunction" 返回. 其他函数将当前状态视为参数,并且返回新的状态值.
  • 如果返回新状态值的函数没有提供,那么默认定义返回未修改的给定状态.
  • 打开和关闭一个输出流的函数是:
  • 名称参数返回值
    "NameTestFunction"{streamname}True|False
    "ConstructorFunction"{streamname,isAppend,caller,opts}{success,state}
    "CloseFunction"{state}ignored
  • 当流使用 Method->Automatic 打开时,需要"NameTestFunction",而且 Wolfram 语言需要基于 streamname 选择使用的流方法. 如果 "NameTestFunction" 返回 True,则将使用流方法. 如果没有提供 "NameTestFunction",默认的行为是返回 False.
  • 当打开一个流用于写入时,调用 "ConstructorFunction". 它打开一个由 streamname 标志的流,它可以是一个文件名、URL 或者其他对流方法适当的资源识别. 如果流已经打开可以在末尾添加字节,则 isAppend 参数是 True,而如果它已经打开可以写入新资源,则为 False. caller 参数是发出消息的符号. 如果 successTrue 的话,调用函数,例如 OpenWrite,将完成一个 OutputStream 的创建. state 用作流方法状态的初始值.
  • Close[st] 被调用时,"CloseFunction" 用于流 st. "ConstructorFunction" 中分配的资源应该被释放. 默认定义不执行任何操作.
  • 写入流的函数包括:
  • 名称参数返回值
    "WriteFunction"{state,{byte...}}{byteCount,newstate}
    "FlushFunction"{state}{ignored,newstate}
  • "WriteFunction" 是写入流的重要函数. byteCount 结果是成功写入流的字节数目. 默认定义返回 0 的 byteCount.
  • "FlushFunction" 用于支持写入流的过程. 它应该确保任何传递给 "WriteFunction" 的字节从内存缓存传输到流. 忽略该函数的结果. 该函数的格式是:
  • "FlushFunction"->Function[state,body;{result,newstate}]
  • 如果不提供 "FlushFunction",使用下列定义:
  • "FlushFunction"->Function[state,{Null,state}]
  • 处理错误的函数如下所示:
  • 名称参数返回值
    "ErrorTextFunction"{state,nbytes}{result,newstate}
    "ClearErrorFunction"{state}{ignored,newstate}
  • "ErrorTextFunction" 用于写入流的过程. 如果存在错误条件,它应该返回一条错误消息 String,如果没有错误则是 Null. Wolfram 语言将调用该函数,如果其他函数表明出现错误,例如,如果 "WriteFunction" 表明它写入比要求更少的字节. 默认定义返回 Nullresult.
  • 如果 "ErrorTextFunction" 返回一个错误字符串,并且被调用来清除错误状态,那么调用"ClearErrorFunction". 然后,"ErrorTextFunction" 应该返回 Null 直至有另一个错误从流中读取. 忽略该函数的结果. 强烈推荐提供 "ErrorTextFunction" 的流方法也应该提供一个 "ClearErrorFunction" 方法.
  • "StreamPositionFunction" 用于支持 StreamPosition. 位置结果是一个指定使用 "WriteFunction" 写入流的字节数目的整数. 默认定义返回 -1.
  • "OptionChangesFunction" 用于编辑来自由Options[st,Method] 返回的列表的流 st 的选项. 例如,流方法可能可以使用包含密码或者其他敏感安全数据的块作为选项. 默认情况下,Options 将返回该设置. 这个函数提供了删除该选项域的方法.
  • 更改选项的函数如下:
  • 名称参数返回值
    "OptionChangesFunction"{state,options}{newoptions,newstate}

范例

基本范例  (1)

定义来自字节列表的输入的流方法,并作为流选项接收:

使用该方法打开一个新的流:

使用该流:

获取字节列表:

Wolfram Research (2012),DefineOutputStreamMethod,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html.

文本

Wolfram Research (2012),DefineOutputStreamMethod,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html.

CMS

Wolfram 语言. 2012. "DefineOutputStreamMethod." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html.

APA

Wolfram 语言. (2012). DefineOutputStreamMethod. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html 年

BibTeX

@misc{reference.wolfram_2024_defineoutputstreammethod, author="Wolfram Research", title="{DefineOutputStreamMethod}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html}", note=[Accessed: 18-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_defineoutputstreammethod, organization={Wolfram Research}, title={DefineOutputStreamMethod}, year={2012}, url={https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html}, note=[Accessed: 18-November-2024 ]}