<?php
|
|
|
|
/*
|
|
This file is part of ActiveLink PHP SYS Package (www.active-link.com).
|
|
Copyright (c) 2002-2004 by Zurab Davitiani
|
|
|
|
You can contact the author of this software via E-mail at
|
|
hattrick@mailcan.com
|
|
|
|
ActiveLink PHP SYS Package is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
the Free Software Foundation; either version 2.1 of the License, or
|
|
(at your option) any later version.
|
|
|
|
ActiveLink PHP SYS Package is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public License
|
|
along with ActiveLink PHP SYS Package; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
/**
|
|
* File class provides a wrapper around filesystem file functions
|
|
* @class File
|
|
* @package org.active-link.sys
|
|
* @author Zurab Davitiani
|
|
* @version 0.4.0
|
|
*/
|
|
|
|
class File {
|
|
|
|
// protected variables
|
|
var $filename;
|
|
var $fileOpenMode;
|
|
var $fileOpenModeRead;
|
|
var $fileOpenModeReadWrite;
|
|
var $fileOpenModeWrite;
|
|
var $fileOpenModeWriteRead;
|
|
var $fileOpenModeAppend;
|
|
var $fileOpenModeAppendRead;
|
|
var $connected;
|
|
var $handleID;
|
|
|
|
/**
|
|
* Constructor accepts filename (optional) and open mode (optional, default "r")
|
|
* If filename is specified, it is opened with the supplied open mode
|
|
* @method File
|
|
* @param optional string filename
|
|
* @param optional string fileOpenMode
|
|
*/
|
|
function File($filename = "", $fileOpenMode = "r") {
|
|
$success = true;
|
|
$this->filename = $filename;
|
|
$this->fileOpenMode = $fileOpenMode;
|
|
$this->fileOpenModeRead = "r";
|
|
$this->fileOpenModeReadWrite = "r+";
|
|
$this->fileOpenModeWrite = "w";
|
|
$this->fileOpenModeWriteRead = "w+";
|
|
$this->fileOpenModeAppend = "a";
|
|
$this->fileOpenModeAppendRead = "a+";
|
|
$this->connected = false;
|
|
$this->handleID = false;
|
|
if($this->filename != "")
|
|
$success = $this->open($this->filename, $this->fileOpenMode);
|
|
return $success;
|
|
}
|
|
|
|
/**
|
|
* Closes open file handle, resets filename, and file open mode to defaults
|
|
* @method close
|
|
* @returns true if successful, false otherwise
|
|
*/
|
|
function close() {
|
|
$success = fclose($this->handleID);
|
|
if($success) {
|
|
$this->filename = "";
|
|
$this->fileOpenMode = "r";
|
|
$this->connected = false;
|
|
$this->handleID = false;
|
|
}
|
|
return $success;
|
|
}
|
|
|
|
/**
|
|
* Returns file contents, optionally specify chunk size number of bytes to use per chunk read (default 8192)
|
|
* @method getContents
|
|
* @param optional int chunkSize
|
|
* @returns string file contents if successful, false otherwise
|
|
*/
|
|
function getContents($chunkSize = 8192) {
|
|
if($this->connected) {
|
|
$fileContents = "";
|
|
do {
|
|
$data = fread($this->handleID, $chunkSize);
|
|
if (strlen($data) == 0) {
|
|
break;
|
|
}
|
|
$fileContents .= $data;
|
|
} while(true);
|
|
return $fileContents;
|
|
}
|
|
else
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Returns file contents as an array of lines
|
|
* @method getContentsArray
|
|
* @returns array file contents lines
|
|
*/
|
|
function getContentsArray() {
|
|
$fileContentsArray = file($this->filename);
|
|
return $fileContentsArray;
|
|
}
|
|
|
|
/**
|
|
* Opens a file with the supplied open mode
|
|
* @method open
|
|
* @param string filename
|
|
* @param optional string fileOpenMode
|
|
* @returns true if successful, false otherwise
|
|
*/
|
|
function open($filename, $mode = "r") {
|
|
$success = false;
|
|
if(!$this->connected) {
|
|
$this->handleID = @fopen($filename, $mode);
|
|
if($this->handleID !== false) {
|
|
$this->filename = $filename;
|
|
$this->fileOpenMode = $mode;
|
|
$this->connected = true;
|
|
$success = true;
|
|
}
|
|
}
|
|
return $success;
|
|
}
|
|
|
|
/**
|
|
* Writes supplied string content to already open file handle
|
|
* @method write
|
|
* @param string strContent
|
|
* @returns number of bytes written if successful, false otherwise
|
|
*/
|
|
function write($strContent) {
|
|
$bytesWritten = fwrite($this->handleID, $strContent, strlen($strContent));
|
|
return $bytesWritten;
|
|
}
|
|
|
|
}
|
|
|
|
?>
|