| Qore Programming Language Reference Manual 1.0.8

Public Member Functions | List of all members
Qore::StreamReader Class Reference

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

Inheritance diagram for Qore::StreamReader:
[legend]

## 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...
InputStream | getInputStream ()
| Returns the InputStream 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

  is | the InputStream for reading data
  encoding | character 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

## ◆ getInputStream()

InputStream Qore::StreamReader::getInputStream | ( |  | ) |

Returns the InputStream for the StreamReader.

Returns the InputStream for the StreamReader.

Returns
  the InputStream for the StreamReader

Since
  0.9.0

## ◆ 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

  limit | maximum 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-ERROR | there 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-ERROR | there 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-ERROR | there 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-ERROR | there 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-ERROR | there 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-ERROR | there 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-ERROR | there 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

  eol | the 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
  trim | if 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-ERROR | this 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

  limit | maximum 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-ERROR | this 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-ERROR | there 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-ERROR | there 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-ERROR | there 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-ERROR | there 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-ERROR | there is not enough data available in the stream

Note
  other stream read errors could be thrown here depending on the underlying InputStream implementation