* @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) {
} elseif ((!BaseFrameworkSystem::isReadableFile($fileName)) && (file_exists($fileName))) {
// File exists but cannot be read
throw new FileReadProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ);
- } elseif (!is_writable($fileName)) {
+ } elseif ((file_exists($fileName)) && (!is_writable($fileName))) {
// File exists but cannot be written
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