https://github.com/wiiseguy/node-streambuf
Streamed Buffers - .NET's BinaryReader facsimile
https://github.com/wiiseguy/node-streambuf
binary-reader buffered-reader buffers node streams
Last synced: 2 months ago
JSON representation
Streamed Buffers - .NET's BinaryReader facsimile
- Host: GitHub
- URL: https://github.com/wiiseguy/node-streambuf
- Owner: Wiiseguy
- License: mit
- Created: 2017-12-27T15:23:44.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-07-04T16:43:45.000Z (over 1 year ago)
- Last Synced: 2024-11-06T07:16:06.510Z (11 months ago)
- Topics: binary-reader, buffered-reader, buffers, node, streams
- Language: TypeScript
- Size: 3.05 MB
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# streambuf - Stream Buffers  [](https://codecov.io/gh/Wiiseguy/node-streambuf) 
> Stream Buffers - .NET's BinaryReader facsimile for Node.jsThis library wraps most of [Buffer](https://nodejs.org/api/buffer.html)'s methods. The difference with Buffer is that with streambuf you don't have to specify an offset each read/write operation, it uses an internal cursor.
`streambuf` offers a low-level API that similar to C++'s [fstream/iostream/etc.](https://www.cplusplus.com/reference/iolibrary/) or .NET's [BinaryReader/BinaryWriter](https://docs.microsoft.com/en-us/dotnet/api/system.io).
If you're looking for a library that is more high-level and built on top of `streambuf`, check out [node-structor](https://github.com/Wiiseguy/node-structor).
## Install
```
$ npm install streambuf
```## Usage
```js
const fs = require('fs');
const { StreamBuffer } = require('streambuf');let buffer = StreamBuffer.from(fs.readFileSync('hiscore.dat'));
let nameLength = buffer.readUInt32LE();
let name = buffer.readString(nameLength);buffer.skip(-nameLength); // go back to the beginning of the name
buffer.writeString(name.toUpperCase()); // overwrite the name in the buffer with something else```
Refer to [Buffer](https://nodejs.org/api/buffer.html) for a list of available read and write methods supported by StreamBuffer (omit the offset param).
## API
StreamBuffer(Buffer)
---
Constructor: initialize with a Buffer object.StreamBuffer(StreamBuffer)
---
Constructor: initialize with another StreamBuffer object's underlying Buffer.StreamBuffer numeric methods
---
readInt8, readInt16LE, readInt16BE, readInt32LE, readInt32BE, readIntLE, readIntBE,
readUInt8, readUInt16LE, readUInt16BE, readUInt32LE, readUInt32BE, readUIntLE, readUIntBE,
readFloatLE, readFloatBE, readDoubleLE, readDoubleBE
writeInt8, writeInt16LE, writeInt16BE, writeInt32LE, writeInt32BE, writeIntLE, writeIntBE,
writeUInt8, writeUInt16LE, writeUInt16BE, writeUInt32LE, writeUInt32BE,
writeFloatLE, writeFloatBE, writeDoubleLE, writeDoubleBEStreamBuffer BigInt methods
---
readBigInt64LE, readBigInt64BE, readBigUInt64LE, readBigUInt64BE,
writeBigInt64LE, writeBigInt64BE, writeBigUInt64LE, writeBigUInt64BE.buffer
---
Provides raw access to the underlying Buffer object (read-only).read(numBytes)
---
Returns a new StreamBuffer that references the same Buffer as the original, but cropped by offset and offset + numBytes..write(buffer: Buffer)
---
Writes the contents of another Buffer..readByte()
---
Alias for .readUInt8().readSByte()
---
Alias for .readInt8().writeByte()
---
Alias for .writeUInt8().writeSByte()
---
Alias for .writeInt8().read7BitInt()
---
Reads a 7 bit encoded integer, like those used by [.NET](https://msdn.microsoft.com/en-us/library/system.io.binarywriter.write7bitencodedint(v=vs.110).aspx).write7BitInt()
---
Writes a 7 bit encoded integer, like those used by [.NET](https://msdn.microsoft.com/en-us/library/system.io.binarywriter.write7bitencodedint(v=vs.110).aspx).readChar([encoding])
---
Reads a single character from the buffer according to the specified character encoding. Multi-byte characters are not read - use `readString` for that instead.
'encoding' defaults to utf8..writeChar([encoding])
---
Writes a single character to the buffer according to the specified character encoding. Multi-byte characters are not written - use `writeString` for that instead.
'encoding' defaults to utf8..readString([length, [encoding]])
---
Decodes to a string according to the specified character encoding in encoding and length.
'encoding' defaults to utf8.
'length' is optional. If left undefined, it will use the first occurrence of a zero (0) byte as the end of the string..writeString(str, [encoding])
---
Writes a string to the underlying buffer with the specified encoding.
'encoding' defaults to utf8..peekString([length, [encoding]])
---
Functions the same way as .readString(), but does not update the offset..readString0([encoding])
---
Reads a string from the buffer according to the specified character encoding, stopping at the first zero (0) byte. Similar to calling .readString() without a length parameter, but more implicit.
'encoding' defaults to utf8..writeString0(str, [encoding])
---
Writes a string to the underlying buffer with the specified encoding, followed by a zero (0) byte.
'encoding' defaults to utf8..readString7([encoding])
---
A specialized version of readString(), it first reads a 7 bit encoded integer and uses that as the length of the to be read string. Can be used to read strings written by .NET's BinaryWriter..writeString7([encoding])
---
A specialized version of writeString(), it first writes a 7 bit encoded integer representing the length of the string, followed by the string..skip(numBytes)
---
Skips the specified number of bytes. A negative number can be used to rewind..setPos(pos) / .seek(pos)
---
Moves the offset to the specified pos..getPos() / .tell()
---
Returns the current offset..rewind()
---
Moves the offset back to 0..isEOF()
---
Returns true if the end of the buffer is reached. (offset >= buffer.length)