* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-class FrameworkFileInputOutputPointer extends BaseFileIo {
+class FrameworkFileInputOutputPointer extends BaseFileIo implements InputOutputPointer {
/**
* Protected constructor
*
*
* @param $fileName The file name we shall pass to fopen()
* @return void
- * @throws FileIsEmptyException If the given file name is NULL or empty
+ * @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 FileIoException If fopen() returns not a file resource
+ * @throws FileIoException If fopen() returns not a file resource
*/
public static final function createFrameworkFileInputOutputPointer ($fileName) {
- // Secure with realpath()
- $fileName = realpath($fileName);
-
// Some pre-sanity checks...
if ((is_null($fileName)) || (empty($fileName))) {
// No filename given
}
// Try to open a handler
- $filePointer = fopen($fileName, 'r+b');
+ $filePointer = fopen($fileName, 'c+b');
if ((is_null($filePointer)) || ($filePointer === FALSE)) {
// Something bad happend
throw new FileIoException($fileName, self::EXCEPTION_FILE_POINTER_INVALID);
}
// Write data to the file pointer and return written bytes
- return fwrite($this->getPointer(), $dataStream);
+ return fwrite($this->getPointer(), $dataStream, strlen($dataStream));
+ }
+
+ /**
+ * Rewinds to the beginning of the file
+ *
+ * @return void
+ */
+ public function rewind () {
+ // Rewind the pointer
+ assert(rewind($this->getPointer()) === 1);
+ }
+
+ /**
+ * Seeks to given position
+ *
+ * @param $seekPosition Seek position in file
+ * @param $whence "Seek mode" (see http://de.php.net/fseek)
+ * @return void
+ */
+ public function seek ($seekPosition, $whence = SEEK_SET) {
+ // Move the file pointer
+ assert(fseek($this->getPointer(), $seekPosition, $whence) === 0);
}
}