Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18672888
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类:

2008-05-29 09:45:41

以下为引用的内容:
php
class CtbClass {     
    
                 var     
$file
;              phperz.com
                 var     
$index
;         
    
         
//建立一个文件并写入输入     
                 
function     null_write($new
)     
                 {     
                                 
$f=fopen($this->file,"w"
);             
www~phperz~com

                                 
flock($f,LOCK_EX);     
                                 
fputs($f,$new
);             
                                 
fclose($f
);     

php程序员站


                 }     
                 
//     添加数据记录到文件末端     
                 
function     add_write($new
)     {                 
                                 
$f=fopen($this->file,"a"
);              www~phperz~com
                                 
flock($f,LOCK_EX
);     
                                 
fputs($f,$new
);                 
                                 
fclose($f
);      php程序员站
                 }     
                 
//     配合readfile()的返回一起使用,把一行数据转换为一维数组     
                 
function     make_array($line
)     {     
                                 
$array     =     explode("\x0E",$line
);      phperz.com
                                 return     
$array
;     
                 }     
                 
                 
//把为一维数组转换一行数据     
                 
function     join_array($line
)     {      php程序员站
                                 
$array     =     join("\x0E",$line
);     
                                 return     
$array
;     
                 }      phperz.com
                 
//     返回数据文件的总行数     
                 
function     getlines
()     {     
                                 
$f=file($this->file
);             
                                 return     
count($f
);             
                 }     
                 
//     返回下一行的数据记录(备用)     
                 
function     next_line
()     {     

phperz.com


                                 
$this->index=$this->index++;             
                                 return     
$this->get
();              phperz.com
                 }     
    
                 
//     返回上一行的数据记录(备用)     
                 
function     prev_line
()     {     
                                 
$this->index=$this->index
--;             
php程序员站

                                 return     
$this->get();             
                 }         
                 
//     返回当前行的数据记录数据较小     
                 
function     get
()     {     

                                 
$f=fopen($this->file,"r");             
                                 
flock($f,LOCK_SH
);      phperz.com
                                 for(
$i=0;$i<=$this->index;$i
++)     {     
                                                 
$rec=fgets($f,1024
);             
www~phperz~com

                                 }     
                                 
$line=explode("\x0E",$rec);     
                                 
fclose($f
);     
                                 return     
$line
;             
                 }         
                 
//     返回当前行的数据记录数据较大     
                 
function     get_big_file
()     {     
php程序员站

                                 
$f=fopen($this->file,"r");             
                                 
flock($f,LOCK_SH
);      phperz.com
                                 for(
$i=0;$i<=$this->index;$i
++)     {     
                                                 
$rec=fgets($f,1024*5
);              phperz.com
                                 }     
                                 
$line=explode("\x0E",$rec
);     
                                 
fclose($f
);     
                                 return     
$line
;             
                 }         
                 
//     打开数据文件---以一维数组返回文件内容     
                 
function     read_file
()     {     
                                 if (
file_exists($this->file))
                                  {     
                                     
$line     =file($this->file
);      phperz.com
                                 }     
                                 return  
$line
;     
                 }     
                 
//     打开数据文件---以二维数组返回文件内容     
                 
function     openFile
()     {     

phperz~com


                                 if     (
file_exists($this->file))     {     
                                                 
$f     =file($this->file
);     
phperz.com

                                                 
$lines     =     array();     
                                                 foreach     (
$f     as     $rawline
)     {     
php程序员之家

                                                                 
$tmpline     =     explode("\x0E",$rawline);     
                                                                 
array_push($lines,     $tmpline
);     

www~phperz~com


                                                 }     
                                 }     
                                 return     
$lines;     
                 }      phperz.com
                 
//     传入一个数组,合并成一行数据,重写整个文件     
                 
function     overwrite($array
){     
                                 
$newline     =     implode("\x0E",$array
);                     
php程序员站

                                 
$f     =     fopen($this->file,"w");     
                                 
flock($f,LOCK_EX
);     

www~phperz~com


                                 
fputs($f,$newline);     
                                 
fclose($f
);     
                 }     
          php程序员站
                 
//     添加一行数据记录到文件末端     
                 
function     add_line($array,$check_n=1
)     {         
                                 
$s=implode("\x0E",$array
);             

php程序员之家


                                 
$f=fopen($this->file,"a");             
                                 
flock($f,LOCK_EX
);      www~phperz~com
                                 
fputs($f,$s
);             
                                 if     (
$check_n==1)     fputs($f,"\n"
);             
php程序员站

                                 
fclose($f);     
                 }             
    
                 
//     插入一行数据记录到文件最前面     
                 
function     insert_line($array
)     {     
phperz.com

                                 
$newfile     =     implode("\x0E",$array);     
                                 
$f     =     fopen($this->file,"r"
);     
php程序员站

                                 
flock($f,LOCK_SH);     
                                 while     (
$line     =     fgets($f,1024
))     {     
php程序员站

                                                 
$newfile     .=     $line;     
                                 }     
                                 
fclose($f
);     

php程序员站


                                 
$f     =     fopen($this->file,"w");     
                                 
flock($f,LOCK_EX
);      www~phperz~com
                                 
fputs($f,$newfile
);     
                                 
fclose($f
);     
                 }     
    
                 
//     更新所有符合条件的数据记录,适用于每行字节数据较大的情况      www~phperz~com
                 
function     update($column,$query_string,$update_array
)     {     
                                 
$update_string     =     implode("\x0E",$update_array
);             
php程序员之家

                                 
$newfile     =     "";                     
                                 
$fc=file($this->file
);      php程序员站
                                 
$f=fopen($this->file,"r"
);     
                                 
flock($f,LOCK_SH
);     


                                 for     (
$i=0;$i<count($fc);$i++)     {     
                                                 
$list     =     explode("\x0E",$fc[$i
]);      phperz~com
                                                 if     (
$list[$column]     !=     $query_string
)     {     
                                                                 
$newfile     =     $newfile.chop($fc[$i])."\n"
;     


                                                 }     else     {     
                                                                 
$newfile     =     $newfile.$update_string;     
                                                 }     
                                 }     
                                 
fclose($f
);     
                                 
$f=fopen($this->file,"w"
);     
php程序员之家

                                 
flock($f,LOCK_EX);     
                                 
fputs($f,$newfile
);     
                                 
fclose($f
);      php程序员站
                 }     
    
                 
//     更新所有符合条件的数据记录,适用于每行字节数据较小的情况     
                 
function     update2($column,$query_string,$update_array
)     {     
                                 
$newline     =     implode("\x0E",$update_array
);             

phperz.com


                                 
$newfile     =     "";     
                                 
$f     =     fopen($this->file,"r"
);     


                                 
flock($f,LOCK_SH);     
                                 while     (
$line     =     fgets($f,1024
))     {     

phperz.com


                                                 
$tmpLine     =     explode("\x0E",$line);     
                                                 if     (
$tmpLine[$column]     ==     $query_string
)     {     

                                                                 
$newfile     .=     $newline;     
                                                 }     else     {     

www~phperz~com


                                                                 
$newfile     .=     $line;     
                                                 }     
                                 }     

www~phperz~com


                                 
fclose($f);     
                                 
$f     =     fopen($this->file,"w"
);      phperz.com
                                 
flock($f,LOCK_EX
);     
                                 
fputs($f,$newfile
);     
                                 
fclose($f
);      phperz~com
                 }     
    
                 
//     删除所有符合条件的数据记录,适用于每行字节数据较大的情况     
                 
function     delete($column,$query_string
)     {     
                                 
$newfile     =     ""
;                      phperz.com
                                 
$fc=file($this->file
);     
                                 
$f=fopen($this->file,"r"
);     

                                 
flock($f,LOCK_SH);     
                                 for     (
$i=0;$i<count($fc);$i
++)     {     

                                                 
$list     =     explode("\x0E",$fc[$i]);     
                                                 if     (
$list[$column]     !=     $query_string
)     {      www~phperz~com
                                                                 
$newfile     =     $newfile.chop($fc[$i])."\n"
;     
                                                 }     

phperz.com


                                 }     
                                 
fclose($f);     
                                 
$f=fopen($this->file,"w"
);      php程序员站
                                 
flock($f,LOCK_EX
);     
                                 
fputs($f,$newfile
);     
                                 
fclose($f
);     

                 }             
    
                 
//     删除所有符合条件的数据记录,适用于每行字节数据较小的情况     
                 
function     delete2($column,$query_string
){         
                                 
$newfile     =     ""
;      www~phperz~com
                                 
$f     =     fopen($this->file,"r"
);     
                                 
flock($f,LOCK_SH
);     

php程序员之家


                                 while     (
$line     =     fgets($f,1024))     {     
                                                 
$tmpLine     =     explode("\x0E",$line
);     
php程序员站

                                                 if     (
$tmpLine[$column]     !=     $query_string)     {     
                                                                 
$newfile     .=     $line
;     


                                                 }     
                                 }     
                                 
fclose($f);     
                                 
$f     =     fopen($this->file,"w"
);     
php程序员站

                                 
flock($f,LOCK_EX);     
                                 
fputs($f,$newfile
);     
                                 
fclose($f
);     
php程序员之家

                 }     
    
         
//取得一个文件里某个字段的最大值     
                 
function     get_max_value($column
)     {     
                                 
$tlines     =     file($this->file
);     
phperz~com

                                 for     (
$i=0;$i<=count($tlines);$i++)     {     
                                                 
$line=explode("\x0E",$tlines[$i
]);      phperz~com
                                                 
$get_value[]=$line[$column
];     
                                 }     
                     
$get_max_value     =     max($get_value
);     

                                 return     
$get_max_value;     
                 }     
    
    
                 
//     根据数据文件的某个字段是否包含$query_string进行查询,以二维数组返回所有符合条件的数据     
                 
function     select($column,     $query_string
)     {      www~phperz~com
                                 
$tline     =     $this->openfile
();     
                                 
$lines     
=     array();     
                                 foreach     (
$tline     as     $line
)     {      phperz.com
                                                 if     (
$line[$column]     ==     $query_string
)     {     
                                                                 
array_push($lines,     $line
);      phperz.com
                                                 }     
                                 }     
    
                                 return     
$lines
;     
                 }      php程序员站
    
                 
//     功能与function     select()一样,速度可能略有提升     
                 
function     select2($column,     $query_string
)     {     
                                 if     (
file_exists($this->file
))     {      phperz.com
                                                 
$tline     =     $this->read_file
();     
                                                 foreach     (
$tline     as     $tmpLine
)     {     
php程序员之家

                                                                 
$line     =     $this->make_array($tmpLine);     
                                                                 if     (
$line[$column]     ==     $query_string
)     {     
phperz~com

                                                                                 
$lines[]=$tmpLine;     
                                                                 }      php程序员站
                                                 }     
                                 }     
    
                                 return     
$lines
;     
                 }      phperz~com
    
                 
//     根据数据文件的某个字段是否包含$query_string进行查询,以一维数组返回第一个符合条件的数据     
                 
function     select_line($column,     $query_string
)     {     
                                 
$tline     =     $this->read_file
();     
                                 foreach     (
$tline     as     $tmpLine
)     {     
                                                 
$line     =     $this->make_array($tmpLine
);      phperz.com
                                                 if     (
$line[$column]     ==     $query_string
)     {     
                                                     return     
$line
;      php程序员之家
                                                                 break;     
                                                 }     
                                 }     
                 }      php程序员之家
                 
//     select     next/prev     line(next_prev     ==>     1/next,     2/prev)     by     cx     
                 
function     select_next_prev_line($column,     $query_string,     $next_prev
)     {     

                                 
$tline     =     $this->read_file();     
                                 
$line_key_end     =     count($tline)     -     1
;      php程序员站
                                 
$line_key     =     -1
;     
                                 foreach     (
$tline     as     $tmpLine
)     {     
                                                 
$line_key
++;     

                                                 
$line     =     $this->make_array($tmpLine);     
                                                 if     (
$next_prev     ==     1)     {     
//     next?     
phperz.com

                                                                 
if     ($line[$column]     ==     $query_string)     {     
                                                                                 if     (
$line_key     ==     0
)     {      phperz.com
                                                                                                 return     
0
;     
                                                                                 }     else     {      phperz~com
                                                                                                 
$line_key_up     =     $line_key     -     1
;     
                                                                                                 return     
$up_line
;      www~phperz~com
                                                                                 }     
                                                                 }     else     {     
                                                                                 
$up_line     =     $line
;     

phperz.com


                                                                 }     
                                                 }     elseif     (
$next_prev     ==     2)     {     //     prev?     


                                                                 
if     ($line[$column]     ==     $query_string)     {     
                                                                                 if     (
$line_key     ==     $line_key_end
)     {     
                                                                                                 return     
0
;     
                                                                                 }     else     {      php程序员站
                                                                                                 
$line_key_down     =     $line_key     +     1
;     
                                                                                                 break;     

                                                                                 }     
                                                                 }     
                                                 }     else     {      phperz.com
                                                                 return     
0;     
                                                 }     
                                 }     
www~phperz~com

                                 
$down_line     =     $this->make_array($tline[$line_key_down]);     
                                 return     
$down_line
;      php程序员站
                 }     
    
    
}
?>
阅读(386) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~