🧩
Seanime Extensions
🧩
Seanime Extensions
  • Seanime
    • Getting started
    • Core APIs
    • Changelog
  • Content Providers
    • Write, test, share
    • Anime torrent provider
    • Manga provider
    • Online streaming provider
  • Plugins
    • Introduction
    • Write, test, share
    • APIs
      • Helpers
      • Store
      • Storage
      • Database
      • AniList
      • System
        • Permissions
        • OS
        • Filepath
        • Commands
        • Buffers, I/O
        • MIME
    • UI
      • Basics
      • User Interface
        • Tray
        • Toast
        • Screen
        • Command Palette
        • Action
        • DOM
      • Anime/Library
        • Anime
        • Playback
        • Continuity
        • Auto Downloader
        • Auto Scanner
        • Filler Manager
        • External Player Link
      • Downloading
        • Downloader
        • Torrent Client
      • Other
        • Manga
        • Discord
        • MPV
    • Hooks
    • Example
  • Frequently asked
    • Feature requests
Powered by GitBook
On this page
  • Bufio
  • Reader
  • Writer
  • Scanner
  • Bytes
  • Read, write
  • I/O
  1. Plugins
  2. APIs
  3. System

Buffers, I/O

Bufio

$bufio provides functionalities to read or write binary data in chunks rather than one byte at a time.

Reader

const file = $os.openFile("C:\Users\user\Downloads\multiline.txt", $os.O_RDONLY, 0);
const reader = $bufio.newReader(file);

// Read lines manually with try/catch to handle EOF
const lines = [];
for (let i = 0; i < 10; i++) { // Try to read more lines than exist
	try {
		const line = reader.readString($toBytes('\n'));
		lines.push(line.trim());
	} catch (e) {
		console.log("Caught expected EOF:", e.message);
	}
}
file.close();

console.log(lines) // ["Line 1", "Line 2", "Line 3"]

Writer

const writeFile = $os.create("C:\Users\user\Downloads\bufio_write.txt");
const writer = $bufio.newWriter(writeFile);

// Write multiple strings
writer.writeString("Buffered ");
writer.writeString("write ");
writer.writeString("test");

// Flush to ensure data is written
writer.flush();
writeFile.close();

Scanner

const scanFile = $os.openFile("C:\Users\user\Downloads\multiline.txt", $os.O_RDONLY, 0);
const scanner = $bufio.newScanner(scanFile);

// Scan lines
const scannedLines = [];
while (scanner.scan()) {
	scannedLines.push(scanner.text());
}
scanFile.close();

console.log(scannedLines) // ["Line 1", "Line 2", "Line 3"]

Bytes

$bytes provides functionalities to manipulate binary data.

Read, write

// Write string to buffer
const buffer = $bytes.newBuffer($toBytes("Hello"));
buffer.writeString(", world!");

// Get buffer content
const bufferContent = $toString(buffer.bytes());
console.log(bufferContent); // Hello, world!

// Create a new buffer string
const strBuffer = $bytes.newBufferString("String buffer");
strBuffer.writeString(" test");

const strBufferContent = strBuffer.string();
console.log(strBufferContent); // String buffer test

// Create a byte reader
const reader = $bytes.newReader($toBytes("Bytes reader test"));
const readerBuffer = new Uint8Array(100); // Empty buffer
const bytesRead = reader.read(readerBuffer); // Read into buffer
console.log(bytesRead, "bytes read") // 17 bytes read

const readerContent = $toString(readerBuffer.subarray(0, bytesRead));
console.log(readerContent); // Bytes reader test

// Buffer methods
const testBuffer = $bytes.newBuffer($toBytes(""));
testBuffer.writeString("Test");
testBuffer.writeByte(32); // Space
testBuffer.writeString("methods");

const testBufferContent = testBuffer.string();
console.log(testBufferContent); // Test methods

// Read methods
const readBuffer = $bytes.newBuffer($toBytes("Read test"));
const readByte = readBuffer.readByte();
console.log("Read byte:", String.fromCharCode(readByte)); // Read byte: R

const nextBytes = new Uint8Array(5);
readBuffer.read(nextBytes);
console.log("Next bytes:", $toString(nextBytes)); // Next bytes: ead t

I/O

$io provides generalized I/O interface functionalities.

PreviousCommandsNextMIME

Last updated 2 months ago