Skip to main content
Home

@std/io@0.225.2
Built and signed on GitHub Actions

UNSTABLE: The utilities for advanced I/O operations using Reader and Writer interfaces.

This package works with DenoIt is unknown whether this package works with Cloudflare Workers, Node.js, Bun, Browsers
It is unknown whether this package works with Cloudflare Workers
It is unknown whether this package works with Node.js
This package works with Deno
It is unknown whether this package works with Bun
It is unknown whether this package works with Browsers
JSR Score
94%
Published
3 months ago (0.225.2)
class Buffer

A variable-sized buffer of bytes with read() and write() 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.

Examples

Usage

import { Buffer } from "@std/io/buffer";
import { assertEquals } from "@std/assert/equals";

const buf = new Buffer();
await buf.write(new TextEncoder().encode("Hello, "));
await buf.write(new TextEncoder().encode("world!"));

const data = new Uint8Array(13);
await buf.read(data);

assertEquals(new TextDecoder().decode(data), "Hello, world!");

Constructors

new
Buffer(ab?: ArrayBufferLike | ArrayLike<number>)

Constructs a new instance with the specified ArrayBuffer as its initial contents.

Properties

readonly
capacity: number

The read only capacity of the buffer's underlying byte slice, that is, the total space allocated for the buffer's data.

readonly
length: number

A read only number of bytes of the unread portion of the buffer.

Methods

bytes(options?: { copy: boolean; }): 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(), or truncate()). If options.copy is 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.

Returns whether the unread portion of the buffer is empty.

grow(n: number): void

Grows the buffer's capacity, if necessary, to guarantee space for another n bytes. After .grow(n), at least n bytes can be written to the buffer without another allocation. If n is negative, .grow() will throw. If the buffer can't grow it will throw an error.

Based on Go Lang's Buffer.Grow.

Reads the next p.length bytes 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 Reader interfaces.

Reads data from r until 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.

Reads data from r until 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.

Reads the next p.length bytes 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).

reset(): void

Resets the contents

truncate(n: number): void

Discards all but the first n unread bytes from the buffer but continues to use the same allocated storage. It throws if n is negative or greater than the length of the buffer.

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 Writer interface.

Writes the given data to the buffer.

New Ticket: Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@std/io

Import symbol

import { Buffer } from "@std/io/buffer";
or

Import directly with a jsr specifier

import { Buffer } from "jsr:@std/io/buffer";

Add Package

pnpm i jsr:@std/io
or (using pnpm 10.8 or older)
pnpm dlx jsr add @std/io

Import symbol

import { Buffer } from "@std/io/buffer";

Add Package

yarn add jsr:@std/io
or (using Yarn 4.8 or older)
yarn dlx jsr add @std/io

Import symbol

import { Buffer } from "@std/io/buffer";

Add Package

npx jsr add @std/io

Import symbol

import { Buffer } from "@std/io/buffer";

Add Package

bunx jsr add @std/io

Import symbol

import { Buffer } from "@std/io/buffer";