<?php

class FileReader {
    var 
$filename;
    var 
$file_handle null;
    var 
$file_size;
    var 
$buf_pos 0;
    var 
$buf_size 1024;
    var 
$buffer null;

    function 
FileReader($filename) {
        
$this->filename $filename;
    }
    
    function 
load() {
        
$this->file_handle fopen($this->filename'r');
        
$this->file_size filesize($this->filename);
    }
    
    function 
getChar() {
        
//load the file if need be
        
if($this->file_handle == null$this->load();
        
        
//if the file hasn't yet been read, or we need more data
        
if($this->buffer == null || ($this->buf_pos >= strlen($this->buffer))) {
            if(
feof($this->file_handle)) return false;
            
            if(!(
$this->buffer fread($this->file_handle$this->buf_size)))
                return 
false;
            
$this->buf_pos 0;
            return 
$this->getChar();
        }
        
        return 
$this->buffer[$this->buf_pos++];
    }
    
    function 
getLine() {
        
$retstr '';
        
$c $this->getChar();
        while(
$c != "\n" && $c != false) {
            
$retstr .= $c;
            
$c $this->getChar();
        }
        
        if(
$c == false) {
            return 
false;
        }
            
        return 
$retstr;
    }
    
    function 
getContents() {
        if(
$this->file_handle == null$this->load();
        
rewind($this->file_handle);
        return 
fread($this->file_handle$this->file_size);
    }
    
    function 
close() {
        
fclose($this->file_handle);
    }
}
?>