PHP文本文件操作类

转载 2006年05月17日 16:16:00
class  CtbClass  {  
 
           var  $file;          
           var  $index;      
 
       //建立一个文件并写入输入  
           function  null_write($new)  
           {  
                       $f=fopen($this->file,"w");          
                       flock($f,LOCK_EX);  
                       fputs($f,$new);          
                       fclose($f);    
           }  
           //  添加数据记录到文件末端  
           function  add_write($new)  {            
                       $f=fopen($this->file,"a");          
                       flock($f,LOCK_EX);  
                       fputs($f,$new);            
                       fclose($f);    
           }    
           //  配合readfile()的返回一起使用,把一行数据转换为一维数组  
           function  make_array($line)  {  
                       $array  =  explode("/x0E",$line);  
                       return  $array;  
           }  
             
           //把为一维数组转换一行数据  
           function  join_array($line)  {  
                       $array  =  join("/x0E",$line);  
                       return  $array;  
           }  
           //  返回数据文件的总行数  
           function  getlines()  {  
                       $f=file($this->file);          
                       return  count($f);          
           }  
           //  返回下一行的数据记录(备用)  
           function  next_line()  {  
                       $this->index=$this->index++;          
                       return  $this->get();          
           }  
 
           //  返回上一行的数据记录(备用)  
           function  prev_line()  {  
                       $this->index=$this->index--;          
                       return  $this->get();          
           }      
           //  返回当前行的数据记录数据较小  
           function  get()  {  
                       $f=fopen($this->file,"r");          
                       flock($f,LOCK_SH);  
                       for($i=0;$i<=$this->index;$i++)  {  
                                   $rec=fgets($f,1024);          
                       }  
                       $line=explode("/x0E",$rec);  
                       fclose($f);  
                       return  $line;          
           }      
           //  返回当前行的数据记录数据较大  
           function  get_big_file()  {  
                       $f=fopen($this->file,"r");          
                       flock($f,LOCK_SH);  
                       for($i=0;$i<=$this->index;$i++)  {  
                                   $rec=fgets($f,1024*5);          
                       }  
                       $line=explode("/x0E",$rec);  
                       fclose($f);  
                       return  $line;          
           }      
           //  打开数据文件---以一维数组返回文件内容  
           function  read_file()  {  
                       if  (file_exists($this->file))  {  
                                   $line  =file($this->file);  
                       }  
                       return  $line;  
           }  
           //  打开数据文件---以二维数组返回文件内容  
           function  openFile()  {  
                       if  (file_exists($this->file))  {  
                                   $f  =file($this->file);  
                                   $lines  =  array();  
                                   foreach  ($f  as  $rawline)  {  
                                               $tmpline  =  explode("/x0E",$rawline);  
                                               array_push($lines,  $tmpline);  
                                   }  
                       }  
                       return  $lines;  
           }  
           //  传入一个数组,合并成一行数据,重写整个文件  
           function  overwrite($array){  
                       $newline  =  implode("/x0E",$array);              
                       $f  =  fopen($this->file,"w");  
                       flock($f,LOCK_EX);  
                       fputs($f,$newline);  
                       fclose($f);  
           }  
     
           //  添加一行数据记录到文件末端  
           function  add_line($array,$check_n=1)  {      
                       $s=implode("/x0E",$array);          
                       $f=fopen($this->file,"a");          
                       flock($f,LOCK_EX);  
                       fputs($f,$s);          
                       if  ($check_n==1)  fputs($f,"/n");          
                       fclose($f);    
           }          
 
           //  插入一行数据记录到文件最前面  
           function  insert_line($array)  {  
                       $newfile  =  implode("/x0E",$array);  
                       $f  =  fopen($this->file,"r");  
                       flock($f,LOCK_SH);  
                       while  ($line  =  fgets($f,1024))  {  
                                   $newfile  .=  $line;  
                       }  
                       fclose($f);  
                       $f  =  fopen($this->file,"w");  
                       flock($f,LOCK_EX);  
                       fputs($f,$newfile);  
                       fclose($f);  
           }  
 
           //  更新所有符合条件的数据记录,适用于每行字节数据较大的情况  
           function  update($column,$query_string,$update_array)  {  
                       $update_string  =  implode("/x0E",$update_array);        
                       $newfile  =  "";              
                       $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)  {  
                                               $newfile  =  $newfile.chop($fc[$i])."/n";  
                                   }  else  {  
                                               $newfile  =  $newfile.$update_string;  
                                   }  
                       }  
                       fclose($f);  
                       $f=fopen($this->file,"w");  
                       flock($f,LOCK_EX);  
                       fputs($f,$newfile);  
                       fclose($f);  
           }  
 
           //  更新所有符合条件的数据记录,适用于每行字节数据较小的情况  
           function  update2($column,$query_string,$update_array)  {  
                       $newline  =  implode("/x0E",$update_array);        
                       $newfile  =  "";  
                       $f  =  fopen($this->file,"r");  
                       flock($f,LOCK_SH);  
                       while  ($line  =  fgets($f,1024))  {  
                                   $tmpLine  =  explode("/x0E",$line);  
                                   if  ($tmpLine[$column]  ==  $query_string)  {  
                                               $newfile  .=  $newline;  
                                   }  else  {  
                                               $newfile  .=  $line;  
                                   }  
                       }  
                       fclose($f);  
                       $f  =  fopen($this->file,"w");  
                       flock($f,LOCK_EX);  
                       fputs($f,$newfile);  
                       fclose($f);  
           }  
 
           //  删除所有符合条件的数据记录,适用于每行字节数据较大的情况  
           function  delete($column,$query_string)  {  
                       $newfile  =  "";              
                       $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)  {  
                                               $newfile  =  $newfile.chop($fc[$i])."/n";  
                                   }  
                       }  
                       fclose($f);  
                       $f=fopen($this->file,"w");  
                       flock($f,LOCK_EX);  
                       fputs($f,$newfile);  
                       fclose($f);  
           }          
 
           //  删除所有符合条件的数据记录,适用于每行字节数据较小的情况  
           function  delete2($column,$query_string){      
                       $newfile  =  "";  
                       $f  =  fopen($this->file,"r");  
                       flock($f,LOCK_SH);  
                       while  ($line  =  fgets($f,1024))  {  
                                   $tmpLine  =  explode("/x0E",$line);  
                                   if  ($tmpLine[$column]  !=  $query_string)  {  
                                               $newfile  .=  $line;  
                                   }  
                       }  
                       fclose($f);  
                       $f  =  fopen($this->file,"w");  
                       flock($f,LOCK_EX);  
                       fputs($f,$newfile);  
                       fclose($f);  
           }  
 
       //取得一个文件里某个字段的最大值  
           function  get_max_value($column)  {  
                       $tlines  =  file($this->file);  
                       for  ($i=0;$i<=count($tlines);$i++)  {  
                                   $line=explode("/x0E",$tlines[$i]);  
                                   $get_value[]=$line[$column];  
                       }  
               $get_max_value  =  max($get_value);  
                       return  $get_max_value;  
           }  
 
 
           //  根据数据文件的某个字段是否包含$query_string进行查询,以二维数组返回所有符合条件的数据  
           function  select($column,  $query_string)  {  
                       $tline  =  $this->openfile();  
                       $lines  =  array();  
                       foreach  ($tline  as  $line)  {  
                                   if  ($line[$column]  ==  $query_string)  {  
                                               array_push($lines,  $line);  
                                   }  
                       }  
 
                       return  $lines;  
           }  
 
           //  功能与function  select()一样,速度可能略有提升  
           function  select2($column,  $query_string)  {  
                       if  (file_exists($this->file))  {  
                                   $tline  =  $this->read_file();  
                                   foreach  ($tline  as  $tmpLine)  {  
                                               $line  =  $this->make_array($tmpLine);  
                                               if  ($line[$column]  ==  $query_string)  {  
                                                           $lines[]=$tmpLine;  
                                               }  
                                   }  
                       }  
 
                       return  $lines;  
           }  
 
           //  根据数据文件的某个字段是否包含$query_string进行查询,以一维数组返回第一个符合条件的数据  
           function  select_line($column,  $query_string)  {  
                       $tline  =  $this->read_file();  
                       foreach  ($tline  as  $tmpLine)  {  
                                   $line  =  $this->make_array($tmpLine);  
                                   if  ($line[$column]  ==  $query_string)  {  
                                       return  $line;  
                                               break;  
                                   }  
                       }  
           }  
           //  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;  
                       $line_key  =  -1;  
                       foreach  ($tline  as  $tmpLine)  {  
                                   $line_key++;  
                                   $line  =  $this->make_array($tmpLine);  
                                   if  ($next_prev  ==  1)  {    //  next?  
                                               if  ($line[$column]  ==  $query_string)  {  
                                                           if  ($line_key  ==  0)  {  
                                                                       return  0;  
                                                           }  else  {  
                                                                       $line_key_up  =  $line_key  -  1;  
                                                                       return  $up_line;  
                                                           }  
                                               }  else  {  
                                                           $up_line  =  $line;  
                                               }  
                                   }  elseif  ($next_prev  ==  2)  {    //  prev?  
                                               if  ($line[$column]  ==  $query_string)  {  
                                                           if  ($line_key  ==  $line_key_end)  {  
                                                                       return  0;  
                                                           }  else  {  
                                                                       $line_key_down  =  $line_key  +  1;  
                                                                       break;  
                                                           }  
                                               }  
                                   }  else  {  
                                               return  0;  
                                   }  
                       }  
                       $down_line  =  $this->make_array($tline[$line_key_down]);  
                       return  $down_line;  
           }  
 
 
 
}  

实用的php文件操作类

  • yonggeit
  • yonggeit
  • 2017年08月23日 22:29
  • 721

PHP进阶(五)——文件操作

文件读取        file_get_contents(),可以将整个文件全部读取到一个字符串中。                 $content = file_get_contents('./...
  • panjican
  • panjican
  • 2016年07月26日 21:04
  • 532

PHP常用的文件操作(二)详细版

以下是个人总结的PHP文件操作函数。当然,这只是部分,还有很多,我没有列出来。 一 、解析路径: 1 获得文件名: basename(); 给出一个包含有指向一个文件的全路径的字符串,本函数返...
  • liu857279611
  • liu857279611
  • 2016年02月09日 22:17
  • 442

使用Java操作文本文件

  使用Java操作二进制文件一文中讲述了如何使用Java处理二进制的文件,这篇文章主要讲述...
  • mingjava
  • mingjava
  • 2004年09月16日 08:42
  • 6583

(实用篇)PHP ftp上传文件操作类

此文章来源于:https://www.cnblogs.com/zhangmiaomiao/p/6013347.html /**  * 作用:FTP操作类( 拷贝、移动、删除文件/创建目录 ) ...
  • weixin_39461487
  • weixin_39461487
  • 2018年01月08日 13:47
  • 25

text.class.php.php文本操作类

  • zouhao619
  • zouhao619
  • 2013年11月25日 13:28
  • 1063

Ini文本文件操作类

操作.ini文件的类库,该类型文件在Winform和Webform开发中经常用到,用于存储系统配置信息等。IniHelper.cs using System;using System.Runtime....
  • beasyer
  • beasyer
  • 2007年06月20日 23:09
  • 580

文本文件操作类

public static List ImportData()        {            List result = new List();            OpenFileDia...
  • zhangjiankun880
  • zhangjiankun880
  • 2010年11月22日 21:23
  • 115

PHP ZIP扩展操作类文件

class PHPZip{ private $zip = null; public function __construct(){ $this->zip=new ZipArchive(); } ...
  • clj9017
  • clj9017
  • 2015年01月19日 17:29
  • 690

标准C文件操作

 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在...
  • loveu131
  • loveu131
  • 2006年07月26日 23:12
  • 4346
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP文本文件操作类
举报原因:
原因补充:

(最多只允许输入30个字)