Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
api:non-standard-lua-libs [2016/06/20 17:27]
payonel [Modules]
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 `string.char()` of each byte (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 `unicode.char()` of the series of bytes (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.