You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

153 lines
4.1 KiB

<?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;
}
}
?>