X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Ffile_directories%2Fio%2Fclass_FrameworkFileInputOutputPointer.php;h=ae372f3532b56aeb6321b892855dca0c96edfd6b;hp=0a750029371e42a9bb173954dd2b0fc728578871;hb=6f830b22ba3fd5a89c56177165a53e8fa94ff9c0;hpb=1ee35e6d96c456b8e3499bd683f1647aa28bd501 diff --git a/inc/classes/main/file_directories/io/class_FrameworkFileInputOutputPointer.php b/inc/classes/main/file_directories/io/class_FrameworkFileInputOutputPointer.php index 0a750029..ae372f35 100644 --- a/inc/classes/main/file_directories/io/class_FrameworkFileInputOutputPointer.php +++ b/inc/classes/main/file_directories/io/class_FrameworkFileInputOutputPointer.php @@ -4,7 +4,7 @@ * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.shipsimu.org * @@ -41,6 +41,7 @@ class FrameworkFileInputOutputPointer extends BaseFileIo implements InputOutputP * @throws FileIsEmptyException If the given file name is NULL or empty * @throws FileReadProtectedException If PHP cannot read an existing file * @throws FileWriteProtectedException If PHP cannot write an existing file + * @throws PathWriteProtectedException If PHP cannot write to an existing path * @throws FileIoException If fopen() returns not a file resource */ public static final function createFrameworkFileInputOutputPointer ($fileName) { @@ -48,12 +49,18 @@ class FrameworkFileInputOutputPointer extends BaseFileIo implements InputOutputP if ((is_null($fileName)) || (empty($fileName))) { // No filename given throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif ((file_exists($fileName)) && (!is_readable($fileName))) { + } elseif (!BaseFrameworkSystem::isReachableFilePath($fileName)) { + // File exists but cannot be read + throw new FileIoException($fileName, self::EXCEPTION_FILE_NOT_REACHABLE); + } elseif ((!BaseFrameworkSystem::isReadableFile($fileName)) && (file_exists($fileName))) { // File exists but cannot be read throw new FileReadProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ); } elseif ((file_exists($fileName)) && (!is_writable($fileName))) { // File exists but cannot be written - throw new FileWriteProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ); + throw new FileWriteProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_WRITTEN); + } elseif (!is_writable(dirname($fileName))) { + // Path is not writable + throw new PathWriteProtectedException($fileName, self::EXCEPTION_PATH_CANNOT_BE_WRITTEN); } // Try to open a handler @@ -167,21 +174,34 @@ class FrameworkFileInputOutputPointer extends BaseFileIo implements InputOutputP return fseek($this->getPointer(), $seekPosition, $whence); } + /** + * Reads a line, maximum 4096 Bytes from current file pointer + * + * @return $data Read data from file + */ + public function readLine () { + // Read whole line + return $this->read(); + } + /** * Reads given amount of bytes from file. * * @param $bytes Amount of bytes to read * @return $data Data read from file */ - public function read ($bytes) { + public function read ($bytes = NULL) { // Validate the pointer $this->validateFilePointer(); - // Try to read given characters - $data = fread($this->getPointer(), $bytes); - - // Was this successfull? - assert(is_string($data)); + // Is $bytes set? + if (is_int($bytes)) { + // Try to read given characters + $data = fread($this->getPointer(), $bytes); + } else { + // Try to read whole line + $data = fread($this->getPointer()); + } // Then return it return $data;