Qore Programming Language Reference Manual  0.8.13.8
Qore::StreamReader Class Reference

This class defines a stream reader for input streams. More...

Inheritance diagram for Qore::StreamReader:

Public Member Functions

 constructor (Qore::InputStream is, *string encoding)
 Creates the StreamReader for reading data from the given InputStream. More...
 
string getEncoding ()
 Returns the character encoding for the StreamReader. More...
 
*binary readBinary (int limit=-1)
 Reads binary data from the input stream up to a given limit. More...
 
*string readLine (*string eol, bool trim=True)
 Reads a text line from the input stream. More...
 
*string readString (int limit=-1)
 Reads a string from the input stream. More...
 
int readi1 ()
 Reads a 1-byte signed integer from the input stream. More...
 
int readi2 ()
 Reads a 2-byte (16 bit) signed integer from the input stream in binary big-endian format. More...
 
int readi2LSB ()
 Reads a 2-byte (16 bit) signed integer from the input stream in binary little-endian format. More...
 
int readi4 ()
 Reads a 4-byte (32 bit) signed integer from the input stream in binary big-endian format. More...
 
int readi4LSB ()
 Reads a 4-byte (32 bit) signed integer from the input stream in binary little-endian format. More...
 
int readi8 ()
 Reads a 8-byte (64 bit) signed integer from the input stream in binary big-endian format. More...
 
int readi8LSB ()
 Reads a 8-byte (64 bit) signed integer from the input stream in binary little-endian format. More...
 
int readu1 ()
 Reads a 1-byte unsigned integer from the input stream. More...
 
int readu2 ()
 Reads a 2-byte (16 bit) unsigned integer from the input stream in binary big-endian format. More...
 
int readu2LSB ()
 Reads a 2-byte (16 bit) unsigned integer from the input stream in binary little-endian format. More...
 
int readu4 ()
 Reads a 4-byte (32 bit) unsigned integer from the input stream in binary big-endian format. More...
 
int readu4LSB ()
 Reads a 4-byte (32 bit) unsigned integer from the input stream in binary little-endian format. More...
 

Detailed Description

This class defines a stream reader for input streams.

Since
Qore 0.8.13
Example: StreamReader basic usage
FileInputStream is("data.txt");
StreamReader sr(is, "UTF-8");
*string line = sr.readLine();
*binary b = sr.readBinary(256);
int i = sr.readi4();
See also
Qore::InputStream

Member Function Documentation

◆ constructor()

Qore::StreamReader::constructor ( Qore::InputStream  is,
*string  encoding 
)

Creates the StreamReader for reading data from the given InputStream.

Parameters
isthe InputStream for reading data
encodingcharacter encoding of the data from the InputStream; if not present, the default character encoding is assumed

◆ getEncoding()

string Qore::StreamReader::getEncoding ( )

Returns the character encoding for the StreamReader.

Code Flags:
CONSTANT
Returns
the character encoding for the StreamReader

◆ readBinary()

*binary Qore::StreamReader::readBinary ( int  limit = -1)

Reads binary data from the input stream up to a given limit.

Example:
*binary b = sr.readBinary(16);
Parameters
limitmaximum amount of binary data to read; if not given or equal to -1, all the data from the InputStream will be read; if equal to 0, NOTHING will be read
Returns
a Binary value or NOTHING if there is no more data available in the stream
Note
  • a short read (a binary object returned with fewer bytes than requested) indicates that there is no more data left in the stream
  • other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readi1()

int Qore::StreamReader::readi1 ( )

Reads a 1-byte signed integer from the input stream.

Example:
int i = sr.readi1();
Returns
a 1-byte signed integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readi2()

int Qore::StreamReader::readi2 ( )

Reads a 2-byte (16 bit) signed integer from the input stream in binary big-endian format.

Example:
int i = sr.readi2();
Returns
a 2-byte signed integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readi2LSB()

int Qore::StreamReader::readi2LSB ( )

Reads a 2-byte (16 bit) signed integer from the input stream in binary little-endian format.

Example:
int i = sr.readi2LSB();
Returns
a 2-byte signed integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readi4()

int Qore::StreamReader::readi4 ( )

Reads a 4-byte (32 bit) signed integer from the input stream in binary big-endian format.

Example:
int i = sr.readi4();
Returns
a 4-byte signed integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readi4LSB()

int Qore::StreamReader::readi4LSB ( )

Reads a 4-byte (32 bit) signed integer from the input stream in binary little-endian format.

Example:
int i = sr.readi4LSB();
Returns
a 4-byte signed integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readi8()

int Qore::StreamReader::readi8 ( )

Reads a 8-byte (64 bit) signed integer from the input stream in binary big-endian format.

Example:
int i = sr.readi8();
Returns
a 8-byte signed integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readi8LSB()

int Qore::StreamReader::readi8LSB ( )

Reads a 8-byte (64 bit) signed integer from the input stream in binary little-endian format.

Example:
int i = sr.readi8LSB();
Returns
a 8-byte signed integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readLine()

*string Qore::StreamReader::readLine ( *string  eol,
bool  trim = True 
)

Reads a text line from the input stream.

Example:
string line = sr.readLine("\n");
Parameters
eolthe optional end of line character(s) to use to detect lines in the data - can be maximally 2 bytes long; if it is longer, the rest is ignored; if this string is not passed, then, if the character-encoding is ASCII-compatible, the end of line character(s) are detected automatically from "\n", "\r", or "\r\n"; if the stream uses a non-ASCII-compatible character encoding, then "\n" is assumed
trimif True the returned lines will be trimmed of the eol bytes
Returns
a text line read from the stream or NOTHING if there is no more data available in the stream
Exceptions
ENCODING-CONVERSION-ERRORthis exception could be thrown if the eol argument has a different character encoding from the data's and an error occurs during encoding conversion
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readString()

*string Qore::StreamReader::readString ( int  limit = -1)

Reads a string from the input stream.

Example:
string str = sr.read(len);
Parameters
limitmaximum amount of characters of string data to read; if not given or equal to -1, all the data from the InputStream will be read; if equal to 0, NOTHING will be read
Returns
a String value or NOTHING if there is no more data available in the stream
Exceptions
STREAM-ENCODING-ERRORthis exception is thrown if invalid character data is detected on the stream; this exception is not thrown when limit is negative, in such cases the input data is not verified
Note
  • a short read (a string returned with fewer characters than requested) indicates that there is no more data left in the stream
  • other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readu1()

int Qore::StreamReader::readu1 ( )

Reads a 1-byte unsigned integer from the input stream.

Example:
int i = sr.readu1();
Returns
a 1-byte unsigned integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readu2()

int Qore::StreamReader::readu2 ( )

Reads a 2-byte (16 bit) unsigned integer from the input stream in binary big-endian format.

Example:
int i = sr.readu2();
Returns
a 2-byte unsigned integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readu2LSB()

int Qore::StreamReader::readu2LSB ( )

Reads a 2-byte (16 bit) unsigned integer from the input stream in binary little-endian format.

Example:
int i = sr.readu2LSB();
Returns
a 2-byte unsigned integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readu4()

int Qore::StreamReader::readu4 ( )

Reads a 4-byte (32 bit) unsigned integer from the input stream in binary big-endian format.

Example:
int i = sr.readu4();
Returns
a 4-byte unsigned integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation

◆ readu4LSB()

int Qore::StreamReader::readu4LSB ( )

Reads a 4-byte (32 bit) unsigned integer from the input stream in binary little-endian format.

Example:
int i = sr.readu4LSB();
Returns
a 4-byte unsigned integer
Exceptions
END-OF-STREAM-ERRORthere is not enough data available in the stream
Note
other stream read errors could be thrown here depending on the underlying InputStream implementation