Module io
This module provides functions for reading and writing streams of raw bytes.
It implements the Stream
and TextStream
classes as per
the CommonJS IO/A proposal.
Streams are closely related with two other modules. Low-level byte manipulation is provided
by the binary
module
and uses the ByteArray
or ByteString
class. The
fs
module returns io
streams for reading and
writing files.
Class MemoryStream
Instance Methods
- close()
- closed()
- flush()
- read(maxBytes)
- readInto(buffer, begin, end)
- readable()
- seekable()
- writable()
- write(source, begin, end)
Instance Properties
MemoryStream (binaryOrNumber)
A binary stream that reads from and/or writes to an in-memory byte array.
If the constructor is called with a Number argument, a ByteArray with the given length is allocated and the length of the stream is set to zero.
If the argument is a binary object it will be used as underlying buffer and the stream length set to the length of the binary object. If argument is a ByteArray, the resulting stream is both readable, writable, and seekable. If it is a ByteString, the resulting stream is readable and seekable but not writable.
If called without argument, a ByteArray of length 1024 is allocated as buffer.
Parameters
Binary|Number | binaryOrNumber | the buffer to use, or the initial capacity of the buffer to allocate. |
MemoryStream.prototype. close ()
Closes the stream, freeing the resources it is holding.
MemoryStream.prototype. closed ()
Returns true if the stream is closed, false otherwise.
Returns
Boolean | true if the stream has been closed |
MemoryStream.prototype. content
The wrapped buffer.
MemoryStream.prototype. flush ()
Flushes the bytes written to the stream to the underlying medium.
MemoryStream.prototype. length
The number of bytes in the stream's underlying buffer.
MemoryStream.prototype. position
The current position of this stream in the wrapped buffer.
MemoryStream.prototype. read (maxBytes)
Read up to maxBytes
bytes from the stream, or until the end of the stream
has been reached. If maxBytes
is not specified, the full stream is read
until its end is reached. Reading from a stream where the end has already been
reached returns an empty ByteString.
Parameters
Number | maxBytes | the maximum number of bytes to read |
Returns
ByteString |
MemoryStream.prototype. readInto (buffer, begin, end)
Read bytes from this stream into the given buffer. This method does not increase the length of the buffer.
Parameters
ByteArray | buffer | the buffer |
Number | begin | optional begin index, defaults to 0. |
Number | end | optional end index, defaults to buffer.length - 1. |
Returns
Number | The number of bytes read or -1 if the end of the stream has been reached |
MemoryStream.prototype. readable ()
Returns true if the stream supports reading, false otherwise. Always returns true for MemoryStreams.
Returns
Boolean | true if stream is readable |
MemoryStream.prototype. seekable ()
Returns true if the stream is randomly accessible and supports the length and position properties, false otherwise. Always returns true for MemoryStreams.
Returns
Boolean | true if stream is seekable |
MemoryStream.prototype. writable ()
Returns true if the stream supports writing, false otherwise. For MemoryStreams this returns true if the wrapped binary is an instance of ByteArray.
Returns
Boolean | true if stream is writable |
MemoryStream.prototype. write (source, begin, end)
Write bytes from b to this stream. If begin and end are specified, only the range starting at begin and ending before end is written.
Parameters
Binary | source | The source to be written from |
Number | begin | optional |
Number | end | optional |
Stream ()
This class implements an I/O stream used to read and write raw bytes.
Stream.prototype. close ()
Closes the stream, freeing the resources it is holding.
Stream.prototype. closed ()
Returns true if the stream has been closed, false otherwise.
Returns
Boolean | true if the stream has been closed |
Stream.prototype. copy (output)
Reads all data available from this stream and writes the result to the given output stream, flushing afterwards. Note that this function does not close this stream or the output stream after copying.
Parameters
Stream | output | The target Stream to be written to. |
Stream.prototype. flush ()
Flushes the bytes written to the stream to the underlying medium.
Stream.prototype. forEach (fn, [thisObj])
Read all data from this stream and invoke function fn
for each chunk of data read.
The callback function is called with a ByteArray as single argument. Note that
the stream is not closed after reading.
Parameters
Function | fn | the callback function |
Object | [thisObj] | optional this-object to use for callback |
Stream.prototype. inputStream
The wrapped java.io.InputStream
.
Stream.prototype. outputStream
The wrapped java.io.OutputStream
.
Stream.prototype. read (maxBytes)
Read up to maxBytes
bytes from the stream, or until the end of the stream
has been reached. If maxBytes
is not specified, the full stream is read
until its end is reached. Reading from a stream where the end has already been
reached returns an empty ByteString.
Parameters
Number | maxBytes | the maximum number of bytes to read |
Returns
ByteString |
Stream.prototype. readInto (buffer, begin, end)
Read bytes from this stream into the given buffer. This method does not increase the length of the buffer.
Parameters
ByteArray | buffer | the buffer |
Number | begin | optional begin index, defaults to 0. |
Number | end | optional end index, defaults to buffer.length - 1. |
Returns
Number | The number of bytes read or -1 if the end of the stream has been reached |
Stream.prototype. readable ()
Returns true if the stream supports reading, false otherwise.
Returns
Boolean | true if stream is readable |
Stream.prototype. seekable ()
Returns true if the stream is randomly accessible and supports the length and position properties, false otherwise.
Returns
Boolean | true if stream is seekable |
Stream.prototype. skip (num)
Try to skip over num bytes in the stream. Returns the number of acutal bytes skipped or throws an error if the operation could not be completed.
Parameters
Number | num | bytes to skip |
Returns
Number | actual bytes skipped |
Stream.prototype. unwrap ()
Get the Java input or output stream instance wrapped by this Stream.
Stream.prototype. writable ()
Returns true if the stream supports writing, false otherwise.
Returns
Boolean | true if stream is writable |
Stream.prototype. write (source, begin, end)
Write bytes from b to this stream. If begin and end are specified, only the range starting at begin and ending before end is written.
Parameters
Binary | source | The source to be written from |
Number | begin | optional |
Number | end | optional |
TextStream (io, options, buflen)
A TextStream implements an I/O stream used to read and write strings. It wraps a raw Stream and exposes a similar interface.
Parameters
Stream | io | The raw Stream to be wrapped. |
Object | options | the options object. Supports the following properties:
|
Number | buflen | optional buffer size. Defaults to 8192. |
TextStream.prototype. content
If the wrapped stream is a MemoryStream this contains its content decoded to a String with this streams encoding. Otherwise contains an empty String.
TextStream.prototype. copy (output)
Reads from this stream with readLine, writing the results to the target stream and flushing, until the end of this stream is reached.
Parameters
Stream | output |
Returns
TextStream | this stream |
TextStream.prototype. forEach (callback, [thisObj])
Calls callback
with each line in the input stream.
Example
const txtStream = fs.open('./browserStats.csv', 'r');
txtStream.forEach(function(line) {
console.log(line); // Print one single line
});
Parameters
Function | callback | the callback function |
Object | [thisObj] | optional this-object to use for callback |
TextStream.prototype. next ()
Returns the next line of input without the newline. Throws
StopIteration
if the end of the stream is reached.
Example
const fs = require('fs');
const txtStream = fs.open('./browserStats.csv', 'r');
try {
while (true) {
console.log(txtStream.next());
}
} catch (e) {
console.log("EOF");
}
Returns
String | the next line |
TextStream.prototype. print ()
Writes all argument values as a single line, delimiting the values using a single blank.
Example
>> const fs = require('fs');
>> const txtOutStream = fs.open('./demo.txt', 'w');
>> txtOutStream.print('foo', 'bar', 'baz');
// demo.txt content:
foo bar baz
Returns
TextStream | this stream |
TextStream.prototype. raw
The wrapped binary stream.
TextStream.prototype. read ()
Read the full stream until the end is reached and return the data read as string.
Returns
String |
TextStream.prototype. readInto ()
Not implemented for TextStream
. Calling this method will raise an error.
TextStream.prototype. readLine ()
Reads a line from this stream. If the end of the stream is reached before any data is gathered, returns an empty string. Otherwise, returns the line including only the newline character. Carriage return will be dropped.
Returns
String | the next line |
TextStream.prototype. readLines ()
Returns an Array of Strings, accumulated by calling readLine
until it
returns an empty string. The returned array does not include the final
empty string, but it does include a trailing newline at the end of every
line.
Example
>> const fs = require('fs');
>> const txtStream = fs.open('./sampleData.csv', 'r');
>> const lines = txtStream.readLines();
>> console.log(lines.length + ' lines');
6628 lines
Returns
Array | an array of lines |
TextStream.prototype. seekable ()
Always returns false, as a TextStream is not randomly accessible.
TextStream.prototype. write ()
Writes all arguments to the stream.
Example
>> const fs = require('fs');
>> const txtOutStream = fs.open('./demo.txt', 'w');
>> txtOutStream.write('foo', 'bar', 'baz');
// demo.txt content:
foobarbaz
Returns
TextStream | this stream |
TextStream.prototype. writeLine (line)
Writes the given line to the stream, followed by a newline.
Parameters
String | line |
Returns
TextStream | this stream |
TextStream.prototype. writeLines (lines)
Writes the given lines to the stream, terminating each line with a newline. This is a non-standard extension, not part of CommonJS IO/A.
Parameters
Array | lines |
Returns
TextStream | this stream |