This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
api:buffer:zh [2023/10/16 10:33] hfsr [静态方法] |
api:buffer:zh [2023/11/29 02:59] hfsr [静态方法] |
||
---|---|---|---|
Line 1: | Line 1: | ||
Buffer(缓冲) API | Buffer(缓冲) API | ||
=========== | =========== | ||
- | `buffer`库提供了便于使用的IO流。本库提供的流更像是`io`库提供的,由`io.open`返回的流,**不像**`filesystem.open`返回的原始流,后者支持的方法没有前者那么多。下文的[[api:buffer:zh#实例方法|实例方法]]板块列出的方法可被用于从`io.open`函数获取的文件句柄。因此就算你没打算构建自定义带缓冲IO流,此API文档也会大有裨益。 | + | `buffer`库提供了便于使用的IO流。本库提供的流更像是`io`库提供的,由`io.open`返回的流,**不像**`filesystem.open`返回的原始流,后者支持的方法没有前者那么多。下文[[api:buffer:zh#实例方法|实例方法]]板块列出的方法也可用于从`io.open`函数获取的文件句柄,因此就算你没打算构建自定义带缓冲流,此API文档也会大有裨益。 |
- | 此外,该API还允许你创建带缓冲IO流。你需要提供后端的流式读取和流式写入,buffer库提供数据缓冲与格式化。一般而言,用户无需构建自己的带缓冲输入输出流。以备参考,io库就使用了带缓冲IO流(包含文件io和控制台io)。 | + | 此外,该API还能让你创建带缓冲流。你需要提供后端的流式读取和流式写入,buffer库提供数据缓冲与格式化。一般而言,用户无需构建自己的带缓冲流。以备参考,io库就使用了带缓冲流(包含文件io和控制台io)。 |
静态方法 | 静态方法 | ||
Line 11: | Line 11: | ||
- `buffer.new([mode: string], stream: table)` | - `buffer.new([mode: string], stream: table)` | ||
- | 用读写模式(`mode`)来修饰传入的流(`stream`),以创建一个带缓冲IO流。模式(`mode`)可以为只读(r或`nil`)、读写(rw)或仅写入(w)。请查看`stream`对象所需的流[[api:buffer:zh#实例方法|实例方法]]有关内容。 | + | 将传入的流(`stream`)封装上读写模式(`mode`),以创建一个带缓冲IO流。模式(`mode`)可以为只读(r或`nil`)、读写(rw)或仅写入(w)。请查看`stream`对象所需流的[[api:buffer:zh#实例方法|实例方法]]有关内容。 |
实例方法 | 实例方法 | ||
Line 22: | Line 22: | ||
- `b:close()` | - `b:close()` | ||
- | 清空缓冲区并关闭修饰的流。 | + | 清空缓冲区并关闭封装的流。 |
- `b:setvbuf([mode: string], [size: number]) mode, size` | - `b:setvbuf([mode: string], [size: number]) mode, size` | ||
Line 61: | Line 61: | ||
`format`指定的每个值都会先从IO流中读出,结果一次性以多个返回值的形式返回。请注意格式字符串都有 \* 前缀,而且只有字符串的第一个字符有意义,其余字符将会被忽略。下列是支持的格式: | `format`指定的每个值都会先从IO流中读出,结果一次性以多个返回值的形式返回。请注意格式字符串都有 \* 前缀,而且只有字符串的第一个字符有意义,其余字符将会被忽略。下列是支持的格式: | ||
* 一个数字值,例如`10` | * 一个数字值,例如`10` | ||
+ | |||
从IO流读取**n**个字节(以二进制模式)或字符(以文本模式),结果将以字符串形式返回。参见[[api:non-standard-lua-libs#input_and_output_facilities|io.open]]以获取有关如何以不同模式打开文件的更多信息。 | 从IO流读取**n**个字节(以二进制模式)或字符(以文本模式),结果将以字符串形式返回。参见[[api:non-standard-lua-libs#input_and_output_facilities|io.open]]以获取有关如何以不同模式打开文件的更多信息。 | ||