Class Buffer
Implements
Accessors
capacity
- get capacity(): number
The read only capacity of the buffer's underlying byte slice, that is, the total space allocated for the buffer's data.
Returns number
The capacity of the buffer.
length
- get length(): number
A read only number of bytes of the unread portion of the buffer.
Returns number
The number of bytes of the unread portion of the buffer.
Methods
bytes
- bytes(options?): Uint8Array
Returns a slice holding the unread portion of the buffer.
The slice is valid for use only until the next buffer modification (that is, only until the next call to a method like
read(),write(),reset(), ortruncate()). Ifoptions.copyis false the slice aliases the buffer content at least until the next buffer modification, so immediate changes to the slice will affect the result of future reads.Parameters
- options: {
copy: boolean;
} = ...The options for the slice.
copy: boolean
Returns Uint8Array
A slice holding the unread portion of the buffer.
- options: {
empty
grow
- grow(n): void
Grows the buffer's capacity, if necessary, to guarantee space for another
nbytes. After.grow(n), at leastnbytes can be written to the buffer without another allocation. Ifnis negative,.grow()will throw. If the buffer can't grow it will throw an error.Based on Go Lang's Buffer.Grow.
Parameters
- n: number
The number of bytes to grow the buffer by.
Returns void
- n: number
read
- read(p): Promise<null | number>
Reads the next
p.lengthbytes from the buffer or until the buffer is drained. Resolves to the number of bytes read. If the buffer has no data to return, resolves to EOF (null).NOTE: This methods reads bytes synchronously; it's provided for compatibility with
Readerinterfaces.Parameters
- p: Uint8Array
The buffer to read data into.
Returns Promise<null | number>
The number of bytes read.
Example: Usage
import { Buffer } from "@std/io/buffer";
import { assertEquals } from "@std/assert/equals";
const buf = new Buffer();
await buf.write(new TextEncoder().encode("Hello, world!"));
const data = new Uint8Array(5);
const res = await buf.read(data);
assertEquals(res, 5);
assertEquals(new TextDecoder().decode(data), "Hello");- p: Uint8Array
readFrom
- read
From (r): Promise<number> Reads data from
runtil EOF (null) and appends it to the buffer, growing the buffer as needed. It resolves to the number of bytes read. If the buffer becomes too large,.readFrom()will reject with an error.Based on Go Lang's Buffer.ReadFrom.
Parameters
- r: Reader
The reader to read from.
Returns Promise<number>
The number of bytes read.
- r: Reader
readFromSync
- read
From (r): numberSync Reads data from
runtil EOF (null) and appends it to the buffer, growing the buffer as needed. It returns the number of bytes read. If the buffer becomes too large,.readFromSync()will throw an error.Based on Go Lang's Buffer.ReadFrom.
Parameters
- r: ReaderSync
The reader to read from.
Returns number
The number of bytes read.
- r: ReaderSync
readSync
- read
Sync (p): null | number Reads the next
p.lengthbytes from the buffer or until the buffer is drained. Returns the number of bytes read. If the buffer has no data to return, the return is EOF (null).Parameters
- p: Uint8Array
The buffer to read data into.
Returns null | number
The number of bytes read.
Example: Usage
import { Buffer } from "@std/io/buffer";
import { assertEquals } from "@std/assert/equals";
const buf = new Buffer();
await buf.write(new TextEncoder().encode("Hello, world!"));
const data = new Uint8Array(5);
const res = await buf.read(data);
assertEquals(res, 5);
assertEquals(new TextDecoder().decode(data), "Hello");- p: Uint8Array
reset
truncate
write
- write(p): Promise<number>
Writes the given data to the buffer. Resolves to the number of bytes written.
[!NOTE] This methods writes bytes synchronously; it's provided for compatibility with the
Writerinterface.Parameters
- p: Uint8Array
The data to write to the buffer.
Returns Promise<number>
The number of bytes written.
- p: Uint8Array
A variable-sized buffer of bytes with
read()andwrite()methods.Buffer is almost always used with some I/O like files and sockets. It allows one to buffer up a download from a socket. Buffer grows and shrinks as necessary.
Buffer is NOT the same thing as Node's Buffer. Node's Buffer was created in 2009 before JavaScript had the concept of ArrayBuffers. It's simply a non-standard ArrayBuffer.
ArrayBuffer is a fixed memory allocation. Buffer is implemented on top of ArrayBuffer.
Based on Go Buffer.
Example: Usage