/**
  * Set the file access mode used by the file handler to open the file.
  * This will reopen the file handler if the file access mode changed and it was opened already.
  *
  * @param FileAccessMode|string $fileMode The file access mode instance or the file access mode as a string that
  * should be used by the file handler to open the file.
  *
  * @return bool True on success, false on failure.
  */
 public function setFileAccessMode($fileMode)
 {
     // Convert $fileMode into a FileAccessMode instance
     if (($fileMode = FileAccessMode::asFileAccessMode($fileMode)) === null) {
         return false;
     }
     // Set the file access mode that should be used
     $this->fileMode = $fileMode;
     // Check whether the file handler is opened and whether the file access mode should be changed.
     // If so, reopen the file handler with the proper file access mode
     if ($this->handler !== null) {
         if ($this->handler->isOpened() && !$fileMode->equals($this->handler->getFileAccessMode(), false)) {
             return $this->handler->reopen($this->fileMode);
         }
     }
     // File access mode changed successfully, return the result
     return true;
 }
 /**
  * Reopen the currently opened file handle. The file handle must be opened in order to reopen it.
  *
  * @param FileAccessMode|string $mode [optional] The file access mode used by the handler as file access mode
  * instance or as PHPs file access mode string. See PHPs fopen() function for more details. This file access mode
  * will be used if the handle needs to be reopened. If set to null, the current file access mode will be used.
  * @param resource|null $context [optional] See PHPs fopen() function for more details.
  * The context of the current opened file handle will be used if not specified.
  *
  * @return bool True on success, false on failure. False will also be returned if the file handle wasn't opened.
  *
  * @see fopen();
  */
 public function reopen($mode = null, $context = null)
 {
     // Make sure the file handle is opened
     if (!$this->isOpened()) {
         return false;
     }
     // Try to convert $mode into a FileAccessMode instance if set
     $mode = FileAccessMode::asFileAccessMode($mode);
     // TODO: Store the current context!
     // Store the current file mode and context if not set
     if ($mode === null) {
         $mode = $this->fileMode;
     }
     if ($context === null) {
         $context = null;
     }
     // Close the file handle, return false on error
     if (!$this->close()) {
         return false;
     }
     // Reopen the file handle, return the result
     return $this->open($mode, $context);
 }