   Some of those functions are low-level, allowing the user
   to interact with the file or IO devices, like `open/2`,
   `copy/3` and others. This module also provides higher
-  level functions that works with filenames and have their naming
+  level functions that work with filenames and have their naming
   based on UNIX variants. For example, one can copy a file
   via `cp/3` and remove files and directories recursively
   via `rm_rf/1`

  @doc """
  Returns information about the `path`. If it exists, it
  returns a `{ :ok, info }` tuple, where info is a
  `File.Info` record. Retuns `{ :error, reason }` with
  the same reasons as `read/1` if a failure occurs.

  ## Options

  to a file is equivalent to sending messages to that process that
  writes to the file descriptor.

  This means files can be passed between nodes and message passing
  guarantees they can write to the same file in a network.

  However, you may not always want to pay the price for this abstraction.
