首页 > 编程地带 > PHP-文件系统

PHP-文件系统

2007年11月3日 发表评论 阅读评论

快一下午的时间终于把文件系统弄清楚了,还搞了一个文件管理器出来!

一、访问文件
  1、打开文件
  

resource fopen( string filename, string mod [,int user_include_path ],resource context]])

  
  参数model指定文件打开后的使用模式:
  

 &#039;r&#039;:  只读方式打开,将文件指针指向文件头<br />  &#039;r+&#039;: 读写方式打开,将文件指针指向文件头<br />  &#039;w&#039;:  写入方式打开,将文件指针指向文件头并将文件大小截为0。如果文件不存在,创建之.<br />  &#039;w+&#039;: 读写方式打开,将文件指针指向文件头并将文件大小截为0。如果文件不存在,创建之.<br />  &#039;a&#039;:  写入文式打开,将文件指针指向文件尾。如果文件不存在,创建之。<br />  &#039;a+&#039;: 读写文式打开,将文件指针指向文件尾。如果文件不存在,创建之.

  
  示例:
  [codes=php]       $file_name=”.\\woyigui.txt”;
      $fp=fopen($file_name,”r+”);
      echo “$fp
“;
  ?>[/codes]  
  2、关闭文件
  

bool fclose (resource handle)

  参数handle为fopen()打开文件所返回的文件指针,如果成功函数返回true,否则返回false。  
  3、读取文件内容
  

 读取整个文件内容:int readfile(string filename&#91;,bool use_include_path&#91;,resource context&#93;&#93;)<br />  读取从当前位置开始一定长度的内容: string fread(int handle,int length);<br />  读取一行数据,并返回最多length个字节个字符:string fgets( int handle&#91;,int length&#93;);<br />  读取从当前位置到文件结束部分的内容:int fpassthru(resource handle);<br />  将handle的文件位置指针设为文件流的开头:int rewind (resource handle);

  
  示例:
  [codes=php]      $file_name=”.\\woyigui.txt”;
      readfile($file_name);
      echo “

“;
      $fp=fopen($file_name,”r”);
      while(!feof($fp)){
          $buffer=fgets($fp,4096);
          echo $buffer;
      }
      echo “

“;
      rewind($fp);
      $contents=fread($fp,100);
      echo “

“;
      fpassthru($fp);
      fclose($fp);
  ?> [/codes]  
  3、写入文件内容
  

int fwrite( resource handle, string string&#91;,int length&#93;)

  
  示例:
  [codes=php]       $file_name=”woyigui.txt”;
      $somecontent=”我亦鬼的网站!\n”;
      if(!handle=fopen($file_name,'a')){
          print “不能打开文件$file_name”;
          exit;
      }
      if(!fwite($handle,$somecontent)){
          print “不能写入文件$file_name”;
          exit;
      }
      print “成功地将$someconntent 写入到文件$file_name”;
      fclose($handle);
  ?>[/codes]  
  4、检测文件是否存在
  

 bool file_exists( string filename)

  
  示例:
  [codes=php]       $file_name=”woyigui.txt”;
      echo (file_exists($file_name));
  ?> [/codes]
  
  5、检测文件访问权限
  

 int fileperms(string filename):以八进制形式返回文件的访问权限,如果出错就返回false.<br />  bool is_dir(string filename):判断给定的文件名是不是一个目录。<br />  bool is_executable(string filename):判断给定的文件是否可执行。<br />  bool is_file(string filename):判断给定的文件名是否是一个正常的文件。<br />  bool is_link(string filename):判断给定的文件名是否为一个符号链接。<br />  bool is_readable(string filename):判断文件名是否可读。<br />  bool is_writable(string filename):判断文件名是否可写。<br />  fileerms()用八进制的形式返回一个文件的访问权限,是获取文件权限的高级方法。

  
  
  6、将文件内容赋值给数组
  

array file(string filename&#91;,int use_include_path&#91;,resource context&#93;&#93;)

  
  示例:
  [codes=php]       $file_name=”woyigui.txt”;
      $arr=file($file_name);
      print_r($arr);
  ?>[/codes]
  
  
  
  
  7、复制、重新命名文件
  

int copy (string source,string dest)

  

bool rename(string oldname,string newname)

  
  示例:
  [codes=php]       $file_name=”woyigui.txt”;
      $new_file_name=”$file_name.bak”;
      if(copy($file_name,$new_file_name))
          if(rename($file_name,”.\\woyigui2.txt”))
          echo “成功”;
  ?> [/codes]
  
  
  
二、操作目录
  1、打开和关闭目录
  

  resource opendir(string path);<br />  void closedir(resource dir_handle);

  
  示例:  [codes=php]
        $dir=”d:\\php\\ext”;
      if (is_dir($dir))
          if($dh=opendir($dir))
                echo $dh;
      closedir($dh);
  ?>  [/codes]  
  2、读取目录
  

string readdir(resource dir_handle)

  
  示例:  
  [codes=php]        $dir=”d:\\php\\ext”;
      $i=0;
      if (is_dir($dir)){
          if ($dh=opendir($dir)){
            while ($file=readdir($dh)){
                $i++;
                echo “$i:$file
“;
            }
         }
      }
      closedir($dh);
  ?>  [/codes]  
  3、改变当前目录
  

bool chdir(string directory);

  
  4、获得脚本文件目录
  

string getcwd(void)

  
  
  
  
  
三、综合示例(我的文件管理器):

[codes=php]

    woyigui的文件管理器
            

woyigui的文件管理器


        

            

                

                

                

                

            

            
                            if(!isset($_GET[currentdir]) || empty($_GET[currentdir])) $dir=getcwd();
                else $dir=$_GET[currentdir];
                chdir($dir);
                echo “当前目录:”.getcwd().”
“;
                $dh=opendir($dir);
                while($item=readdir($dh))
                {
                    echo “

“;
                  $update_date=date(“y-m-d h:i:sA”,filenametile($itme));
                  echo “

“;
                }
                closedir($dh);
            ?>
      

文件名 大小 创建时间 最后修改时间
“;
                    if(is_dir($item))
                    {
                        if ($item==”.”)
                        {
                            $currentdir=getcwd();
                            echo “.“;
                        }
                        elseif($item==”..”)
                        {
                            $currentdir=getcwd().”\\..”;
                            echo “..“;
                        }
                        else
                        {
                            $currentdir=getcwd().”\\$item”;
                            echo “$item“;
                        }
                   }
                   else{
                      $extname=substr($item,strrpos($item,”.”));
                      if(strtoupper($extname)==”.php” || strtoupper($extname)==”.txt”
                      {
                          $currentdir=getcwd();
                          echo “$item“;
                      }
                      else
                      {
                          echo “$item”;
                      }
                  }
                  
                  if(is_dir($item)) $file_size=”目录”;
                  else $file_size=round(filesize($item($item)/1024).”K”);
                  echo “

$create_date $update_date

  

  
  
  


    woyigui的文件查看器
    
        返回文件管理器

                    $currentdir=$_GET[currentdir];
            $filename=$_GET[filename];
            $type=$_GET[type];
            if(strtoupper($type)==”.php”)
            {
                readfile($currentdir.”\\”.$filename);
            }
            else
            {
                $fp=fopen($currentdir.”\\”.$filename,”r”);
                while($line=fgets($fp)){
                    $line=htmlentities($line,ENT_COMPAT,”GB2312″);
                    echo $line;
                }
                fclose($fp);
            }
       ?>
      
  
[/codes]            

转载请注明:woyigui's blog [http://www.woyigui.cn/]
本文标题:PHP-文件系统
本文地址:http://www.woyigui.cn/2007/11/03/php%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/

分类: 编程地带 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
*