 
   The allowed modes:
 
+    * `:binary` - opens the file in binary mode, disabling special handling of unicode sequences
+      (default mode).
+
     * `:read` - the file, which must exist, is opened for reading.
 
     * `:write` - the file is opened for writing. It is created if it does not

  @type posix :: :file.posix()
  @type io_device :: :file.io_device()
  @type stat_options :: [time: :local | :universal | :posix]
  @type mode :: :append | :binary | :compressed | :delayed_write | :exclusive |
    :raw | :read | :read_ahead | :sync | :write |
    {:encoding, :latin1 | :unicode | :utf16 | :utf32 | :utf8 |
      {:utf16, :big | :little} | {:utf32, :big | :little}} |
    {:read_ahead, pos_integer} |
    {:delayed_write, non_neg_integer, non_neg_integer}

      cannot cope with the character range of the data, an error occurs and the
      file will be closed.

    * `:delayed_write`, `:raw`, `:ram`, `:read_ahead`, `:sync`, `{:encoding, ...}`,
      `{:read_ahead, pos_integer}`, `{:delayed_write, non_neg_integer, non_neg_integer}` -
      for more information about these options see [`:file.open/2`](http://www.erlang.org/doc/man/file.html#open-2).

  This function returns:

