This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
api:non-standard-lua-libs [2016/06/20 20:20] payonel [Input and Output Facilities] |
api:non-standard-lua-libs [2016/06/20 20:38] payonel [Input and Output Facilities] |
||
---|---|---|---|
Line 135: | Line 135: | ||
- **binary mode** | - **binary mode** | ||
- | Streams given by `io.open(path, "rb")` or `filesystem.open(path)` are in binary mode. `filesystem.open(path, "rb")` also works, but streams returned by `filesystem.open` are **always** in binary mode. `stream:read(1)` in binary mode reads a single byte. Reading a numerical value via `buffered_stream:read("*n")` considers the mapped character symbol (e.g. "1" is interpreted as 1) on a byte by byte basis. (buffered streams are returned from `io.open`, and support interpreting numerical values from a stream) | + | Streams given by `io.open(path, "rb")` or `filesystem.open(path)` are in binary mode. `filesystem.open(path, "rb")` also works, but streams returned by `filesystem.open` are **always** in binary mode. `stream:read(1)` in binary mode reads a single byte. Reading a numerical value via `buffered_stream:read("*n")` reads the data as single-byte characters. (buffered streams are returned from `io.open`, and support interpreting numerical values from a stream) |
- **text mode** | - **text mode** | ||
- | Only streams given by `io.open` that specifically do not use "b" in the mode are in text mode. Examples are `io.open(path)` and `io.open(path, "r")`. No type of handle given by `filesystem.open` is a stream in text mode. `stream:read(1)` in text mode reads a single unicode-aware char. This could be a single byte, or even 3 bytes - depending on the text. Reading a numerical value via `buffered_stream:read("*n")` considers the mapped character symbol (e.g. "1" is interpreted as 1) on a unicode interpretation of the string. (buffered streams are returned from `io.open`, and support interpreting numerical values from a stream) | + | Only streams given by `io.open` that specifically do not use "b" in the mode are in text mode. Examples are `io.open(path)` and `io.open(path, "r")`. No type of handle given by `filesystem.open` is a stream in text mode. `stream:read(1)` in text mode reads a single unicode-aware char. This could be a single byte, or even 3 bytes - depending on the text. Reading a numerical value via `buffered_stream:read("*n")` reads the data as unicode chars. (buffered streams are returned from `io.open`, and support interpreting numerical values from a stream) |
* `io.open(path, "r")` is equivalent to `io.open(path)`, which opens a file in text read-only mode. | * `io.open(path, "r")` is equivalent to `io.open(path)`, which opens a file in text read-only mode. |