
HarmonyOS API:@ohos.buffer (Buffer)
版本:v3.1 Beta
@ohos.buffer (Buffer)
更新时间: 2023-02-17 09:19
Buffer对象用于表示固定长度的字节序列,是专门存放二进制数据的缓存区。
推荐使用场景: 可用于处理大量二进制数据,图片处理、文件接收上传等。
说明
本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
导入模块
BufferEncoding
表示支持的编码格式字符串。
系统能力: SystemCapability.Utils.Lang
编码格式 | 说明 |
'ascii' | 表示ascii格式,不区分大小写。 |
'utf8' | 表示utf8格式,不区分大小写。 |
'utf-8' | 表示utf8格式,不区分大小写。 |
'utf16le' | 表示utf16小端序格式,不区分大小写。 |
'ucs2' | 表示utf16小端序格式,不区分大小写。 |
'ucs-2' | 表示utf16小端序格式,不区分大小写。 |
'base64' | 表示base64格式,不区分大小写。 |
'base64url' | 表示base64格式,不区分大小写。 |
'latin1' | 表示ascii格式,不区分大小写。 |
'binary' | 表示二进制格式,不区分大小写。 |
'hex' | 表示十六进制格式,不区分大小写。 |
buffer.alloc
alloc(size: number, fill?: string | Buffer | number, encoding?: BufferEncoding): Buffer
创建一定字节长度的Buffer对象,并初始化。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
size | number | 是 | 指定的Buffer对象长度,单位:字节。 |
fill | string | Buffer | number | 否 | 填充至新缓存区的值,默认值: 0。 |
encoding | 否 | 编码格式(当fill为string时,才有意义)。 默认值: 'utf-8'。 |
返回值:
类型 | 说明 |
Buffer | 返回一个Buffer对象。 |
示例:
buffer.allocUninitializedFromPool
allocUninitializedFromPool(size: number): Buffer
创建指定大小未被初始化的Buffer对象。内存从缓冲池分配。
创建的Buffer的内容未知,需要使用fill()函数来初始化Buffer对象。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
size | number | 是 | 指定的Buffer对象长度,单位:字节。 |
返回值:
类型 | 说明 |
Buffer | 未初始化的Buffer实例。 |
示例:
buffer.allocUninitialized
allocUninitialized(size: number): Buffer
创建指定大小未被初始化的Buffer实例。内存不从缓冲池分配。
创建的Buffer的内容未知,需要使用fill()函数来初始化Buffer对象。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
size | number | 是 | 指定的Buffer对象长度,单位:字节。 |
返回值:
类型 | 说明 |
Buffer | 未初始化的Buffer实例。 |
示例:
buffer.byteLength
byteLength(string: string | Buffer | TypedArray | DataView | ArrayBuffer | SharedArrayBuffer, encoding?: BufferEncoding): number
根据不同的编码方法,返回指定字符串的字节数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
string | string | Buffer | TypedArray | DataView | ArrayBuffer | SharedArrayBuffer | 是 | 指定字符串。 |
encoding | 否 | 编码格式。 默认值: 'utf-8'。 |
返回值:
类型 | 说明 |
number | 返回指定字符串的字节数。 |
示例:
buffer.concat
concat(list: Buffer[] | Uint8Array[], totalLength?: number): Buffer
将数组中的内容复制指定字节长度到新的Buffer对象中并返回。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
list | Buffer[] | Uint8Array[] | 是 | 实例数组。 |
totalLength | number | 否 | 需要复制的总字节长度。 |
返回值:
类型 | 说明 |
Buffer | 返回新的Buffer对象。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "totalLength" is out of range. |
示例:
buffer.from
from(array: number[]): Buffer;
根据指定数组创建新的Buffer对象。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
array | number[] | 是 | 指定数组。 |
返回值:
类型 | 说明 |
Buffer | 新的Buffer对象。 |
示例:
buffer.from
from(arrayBuffer: ArrayBuffer | SharedArrayBuffer, byteOffset?: number, length?: number): Buffer
创建指定长度的与arrayBuffer共享内存的Buffer对象。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
arrayBuffer | ArrayBuffer | SharedArrayBuffer | 是 | 实例对象。 |
byteOffset | number | 否 | 字节偏移量,默认值: 0。 |
length | number | 否 | 字节长度, 默认值: (arrayBuffer.byteLength - byteOffset)。 |
返回值:
类型 | 说明 |
Buffer | 返回一个共享内存的Buffer对象。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "[byteOffset/length]" is out of range. |
示例:
buffer.from
from(buffer: Buffer | Uint8Array): Buffer
创建并复制buffer数据到新的Buffer对象并返回。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
buffer | Buffer | Uint8Array | 是 | 对象数据。 |
返回值:
类型 | 说明 |
Buffer | 新的Buffer对象。 |
示例:
buffer.from
from(object: Object, offsetOrEncoding: number | string, length: number): Buffer
根据指定的object类型数据,创建新的Buffer对象。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
object | Object | 是 | 支持Symbol.toPrimitive或valueOf()的对象。 |
offsetOrEncoding | number | string | 是 | 字节偏移量或编码格式。 |
length | number | 是 | 字节长度。 |
返回值:
类型 | 说明 |
Buffer | 返回新的Buffer对象。 |
示例:
buffer.from
from(string: String, encoding?: BufferEncoding): Buffer
根据指定编码格式的字符串,创建新的Buffer对象。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
string | String | 是 | 字符串 |
encoding | 否 | 编码格式。 默认值: 'utf-8'。 |
返回值:
类型 | 说明 |
Buffer | 返回新的Buffer对象。 |
示例:
buffer.isBuffer
isBuffer(obj: Object): boolean
判断obj是否为Buffer。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
obj | Object | 是 | 判断对象 |
返回值:
类型 | 说明 |
boolean | 如果obj是Buffer,则返回true,否则返回false。 |
示例:
buffer.isEncoding
isEncoding(encoding: string): boolean
判断encoding是否为支持的编码格式。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
encoding | string | 是 | 编码格式。 |
返回值:
类型 | 说明 |
boolean | 是支持的编码格式返回true,反之则返回false。 |
示例:
buffer.compare
compare(buf1: Buffer | Uint8Array, buf2: Buffer | Uint8Array): -1 | 0 | 1
返回两个数组的比较结果,通常用于对Buffer对象数组进行排序。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
buf1 | Buffer | Uint8Array | 是 | 待比较数组。 |
buf2 | Buffer | Uint8Array | 是 | 待比较数组。 |
返回值:
类型 | 说明 |
-1 | 0 | 1 | 如果buf1与buf2相同,则返回0。 如果排序时buf1位于buf2之后,则返回1。 如果排序时buf1位于buf2之前,则返回-1。 |
示例:
buffer.transcode
transcode(source: Buffer | Uint8Array, fromEnc: string, toEnc: string): Buffer
将给定的Buffer或Uint8Array对象从一种字符编码重新编码为另一种。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
source | Buffer | Uint8Array | 是 | 实例对象。 |
fromEnc | string | 是 | 当前编码。 |
toEnc | string | 是 | 目标编码。 |
返回值:
类型 | 说明 |
Buffer | 根据当前编码转换成目标编码,并返回一个新的buffer实例。 |
示例:
Buffer
属性
系统能力: SystemCapability.Utils.Lang
名称 | 类型 | 可读 | 可写 | 说明 |
length | number | 是 | 否 | Buffer对象的字节长度。 |
buffer | ArrayBuffer | 是 | 否 | ArrayBuffer对象。 |
byteOffset | number | 是 | 否 | 当前Buffer所在内存池的偏移量。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200013 | Cannot set property ${propertyName} of Buffer which has only a getter. |
示例:
compare
compare(target: Buffer | Uint8Array, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): -1 | 0 | 1
当前Buffer对象与目标Buffer对象进行比较,并返回Buffer在排序中的顺序结果。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
target | Buffer | Uint8Array | 是 | 要比较的实例对象。 |
targetStart | number | 否 | target实例中开始的偏移量。 默认值: 0。 |
targetEnd | number | 否 | target实例中结束的偏移量(不包含结束位置)。 默认值: 目标对象的字节长度。 |
sourceStart | number | 否 | this实例中开始的偏移量。 默认值: 0。 |
sourceEnd | number | 否 | this实例中结束的偏移量(不包含结束位置)。 默认值: 当前对象的字节长度。 |
返回值:
类型 | 说明 |
number | 返回比较结果。-1:当前排列在目标前,0:当前与目标相同,1:当前排列在目标后。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "[targetStart/targetEnd/sourceStart/sourceEnd]" is out of range. |
示例:
copy
copy(target: Buffer| Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number
将this实例中指定位置的数据复制到target的指定位置上,并返回复制的字节总长度。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
target | Buffer | Uint8Array | 是 | 要复制到的Buffer或Uint8Array实例。 |
targetStart | number | 否 | target实例中开始写入的偏移量。 默认值: 0。 |
sourceStart | number | 否 | this实例中开始复制的偏移量。 默认值: 0。 |
sourceEnd | number | 否 | this实例中结束复制的偏移量(不包含结束位置)。 默认值: 当前对象的字节长度。 |
返回值:
类型 | 说明 |
number | 复制的字节总长度。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "[targetStart/sourceStart/sourceEnd]" is out of range. |
示例:
entries
entries(): IterableIterator<[number, number]>
返回一个包含key和value的迭代器。
系统能力: SystemCapability.Utils.Lang
返回值:
类型 | 说明 |
number | 表示迭代器的key值。 |
number | 表示迭代器的value值。 |
示例:
equals
equals(otherBuffer: Uint8Array | Buffer): boolean
比较this实例和otherBuffer实例是否相等。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
otherBuffer | Uint8Array | Buffer | 是 | 比较的目标对象。 |
返回值:
类型 | 说明 |
boolean | 相等则返回true,否则返回false。 |
示例:
fill
fill(value: string | Buffer | Uint8Array | number, offset?: number, end?: number, encoding?: BufferEncoding): Buffer
用value填充当前对象指定位置的数据,默认为循环填充,并返回填充后的Buffer对象。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
value | string | Buffer | Uint8Array | number | 是 | 用于填充的值。 |
offset | number | 否 | 起始偏移量。 默认值: 0。 |
end | number | 否 | 结束偏移量(不包含结束位置)。 默认值: 当前对象的字节长度。 |
encoding | 否 | 字符编码格式(value为string才有意义)。 默认值: 'utf-8'。 |
返回值:
类型 | 说明 |
Buffer | 返回一个填充后的Buffer对象。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "[offset/end]" is out of range. |
示例:
includes
includes(value: string | number | Buffer | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): boolean
检查Buffer对象是否包含value值。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
value | string | number | Buffer | Uint8Array | 是 | 要搜索的内容。 |
byteOffset | number | 否 | 字节偏移量。 如果为负数,则从末尾开始计算偏移量。 默认值: 0。 |
encoding | 否 | 字符编码格式。 默认值: 'utf-8'。 |
返回值:
类型 | 说明 |
boolean | 存在为true,否则为false。 |
示例:
indexOf
indexOf(value: string | number | Buffer | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number
查找当前对象中第一次出现value的索引,如果不包含value,则为-1。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
value | string | number | Buffer | Uint8Array | 是 | 要查找的内容。 |
byteOffset | number | 否 | 字节偏移量。 如果为负数,则从末尾开始计算偏移量。 默认值: 0。 |
encoding | 否 | 字符编码格式。 默认值: 'utf-8'。 |
返回值:
类型 | 说明 |
number | 第一次出现位置。 |
示例:
keys
keys(): IterableIterator<number>
返回一个包含key值的迭代器。
系统能力: SystemCapability.Utils.Lang
返回值:
类型 | 说明 |
IterableIterator<number> | 返回一个包含key值的迭代器。 |
示例:
values
values(): IterableIterator<number>
返回一个包含value的迭代器。
系统能力: SystemCapability.Utils.Lang
返回值:
类型 | 说明 |
IterableIterator<number> | 迭代器。 |
示例:
lastIndexOf
lastIndexOf(value: string | number | Buffer | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number
返回this实例中最后一次出现value的索引,如果对象不包含,则为-1。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
value | string | number | Buffer | Uint8Array | 是 | 要搜索的内容。 |
byteOffset | number | 否 | 字节偏移量。 如果为负数,则从末尾开始计算偏移量。 默认值: 0。 |
encoding | 否 | 字符编码格式。 默认值: 'utf-8'。 |
返回值:
类型 | 说明 |
number | 最后一次出现value值的索引。 |
示例:
readBigInt64BE
readBigInt64BE(offset?: number): bigint
从指定的offset处读取有符号的大端序64位整数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
bigint | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readBigInt64LE
readBigInt64LE(offset?: number): bigint
从指定的offset处读取有符号的小端序64位整数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
bigint | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readBigUInt64BE
readBigUInt64BE(offset?: number): bigint
从指定的offset处读取无符号的大端序64位整数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
bigint | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readBigUInt64LE
readBigUInt64LE(offset?: number): bigint
从指定的offset处读取无符号的小端序64位整数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
bigint | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readDoubleBE
readDoubleBE(offset?: number): number
从指定offset处读取64位大端序双精度值。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
number | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readDoubleLE
readDoubleLE(offset?: number): number
从指定offset处读取64位小端序双精度值。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
number | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readFloatBE
readFloatBE(offset?: number): number
从指定offset处读取32位大端序浮点数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
number | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readFloatLE
readFloatLE(offset?: number): number
从指定offset处读取32位小端序浮点数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
number | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readInt8
readInt8(offset?: number): number
从指定的offset处读取有符号的8位整数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
number | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readInt16BE
readInt16BE(offset?: number): number
从指定的offset处读取有符号的大端序16位整数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
number | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readInt16LE
readInt16LE(offset?: number): number
从指定的offset处读取有符号的小端序16位整数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
number | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readInt32BE
readInt32BE(offset?: number): number
从指定的offset处读取有符号的大端序32位整数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
number | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readInt32LE
readInt32LE(offset?: number): number
从指定的offset处读取有符号的小端序32位整数。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 否 | 偏移量。默认值: 0。 |
返回值:
类型 | 说明 |
number | 读取出的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "offset" is out of range. |
示例:
readIntBE
readIntBE(offset: number, byteLength: number): number
从指定的offset处的buf读取byteLength个字节,并将结果解释为支持最高48位精度的大端序、二进制补码有符号值。
系统能力: SystemCapability.Utils.Lang
参数:
参数名 | 类型 | 必填 | 说明 |
offset | number | 是 | 偏移量。 默认值: 0。 |
byteLength | number | 是 | 读取的字节数。 |
返回值:
类型 | 说明 |
number | 读取的内容。 |
错误码:
以下错误码的详细介绍请参见语言基础类库错误码。
错误码ID | 错误信息 |
10200001 | The value of "[offset/byteLength]" is out of range. |
示例:
