对文本文件操作很好的类

原创 2005年04月24日 17:31: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; 
           } 
 
 
 
}

RxBluetooth一个很好的开源蓝牙操作类(扫描、状态监听、连接、发送、接收数据)

RxBluetooth一个很好的开源蓝牙操作类(扫描、状态监听、连接、发送、接收数据)RxBluetoothAndroid 蓝牙操作库. RxBluetooth 使用:声明权限: ...

一个很好用的DBHelper类(包括使用SQL语句 存储过程 事务 做相关操作) 入门级

话不多少 直接贴代码   需引入的命名空间 需引入的命名空间   定义连接属性 SQL连接对象private SqlConnection conn; public Sql...

c#操作文本文件或日志文件封装类

///      /// ***************************      /// ****操作文本文件或日志文件封装类 *****      /// ****  V1.0 1...
  • hyxwill
  • hyxwill
  • 2012年11月06日 15:15
  • 317

DriveInfo Directory File类和FileInfo类知识点 文本文件操作

常用方法: static GetDrives--获取所有逻辑驱动器名称 常用属性: AvailableFreeSpace--驱动器上的可用空闲空间量。(当前用户) TotalFreeS...

一个很好用的C#反射操作类

今天在做项目的时候需要反射来创建类,并调用其方式,这个类很不错,一直在用,贴出来供分享. /// /// 获取用户数据库分页数据 /// ///...

Windows Phone中Stream和Buffer类读写操作(不仅仅是文本文件)

FileIO.ReadTextAsync(file) FileIO.WriteTextAsync(file) StreamReader和StreamWriter类 以上都是基于操作的是文本内容的...

C#--I/O流操作文本文件之StreamWrite类和StreamReader类

使用

一个很好用的数据操作的类

  • 2010年07月22日 13:06
  • 215KB
  • 下载

很好的INI文件操作类

  • 2007年08月03日 13:41
  • 9KB
  • 下载

Drupal 7 数据库 操作(很好,很犀利)

Drupal 7 使用 PDO 连接数据库,鉴于 PHP 6将把 PDO 做为默认数据库连接方式,这是必须的选择。实际上,Drupal 7之前的数据库抽象层,和 PDO 的某些理念一致,用相同的方法操...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对文本文件操作很好的类
举报原因:
原因补充:

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