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.
Last updated