name = $name; $this->fs = $fs ? $fs : FSTools::singleton(); } /** Returns the filename of the file. */ public function getName() {return $this->name;} /** Returns directory of the file without trailing slash */ public function getDirectory() {return $this->fs->dirname($this->name);} /** * Retrieves the contents of a file * @todo Throw an exception if file doesn't exist */ public function get() { return $this->fs->file_get_contents($this->name); } /** Writes contents to a file, creates new file if necessary */ public function write($contents) { return $this->fs->file_put_contents($this->name, $contents); } /** Deletes the file */ public function delete() { return $this->fs->unlink($this->name); } /** Returns true if file exists and is a file. */ public function exists() { return $this->fs->is_file($this->name); } /** Returns last file modification time */ public function getMTime() { return $this->fs->filemtime($this->name); } /** * Chmod a file * @note We ignore errors because of some weird owner trickery due * to SVN duality */ public function chmod($octal_code) { return @$this->fs->chmod($this->name, $octal_code); } /** Opens file's handle */ public function open($mode) { if ($this->handle) $this->close(); $this->handle = $this->fs->fopen($this->name, $mode); return true; } /** Closes file's handle */ public function close() { if (!$this->handle) return false; $status = $this->fs->fclose($this->handle); $this->handle = false; return $status; } /** Retrieves a line from an open file, with optional max length $length */ public function getLine($length = null) { if (!$this->handle) $this->open('r'); if ($length === null) return $this->fs->fgets($this->handle); else return $this->fs->fgets($this->handle, $length); } /** Retrieves a character from an open file */ public function getChar() { if (!$this->handle) $this->open('r'); return $this->fs->fgetc($this->handle); } /** Retrieves an $length bytes of data from an open data */ public function read($length) { if (!$this->handle) $this->open('r'); return $this->fs->fread($this->handle, $length); } /** Writes to an open file */ public function put($string) { if (!$this->handle) $this->open('a'); return $this->fs->fwrite($this->handle, $string); } /** Returns TRUE if the end of the file has been reached */ public function eof() { if (!$this->handle) return true; return $this->fs->feof($this->handle); } public function __destruct() { if ($this->handle) $this->close(); } } // vim: et sw=4 sts=4