PHP文件编程

文件编程
⦁ 文件编程的必要性
⦁ 在网站开发中,我们要使用到文件的上传和下载,就是经典的文件编程的使用
⦁ 文件的基本概念
文件就是保存数据(二进制素具,文本数据),在程序员看来,文件就是数据的来源。
⦁ 文件流
在对文件进行操作的过程中,我们以流的概念来操作

从该图中我们可以看出,如果你的数据是从程序(内存)向文件(磁盘)流动,则我们成为输出流,反之输入流。
⦁ 文件-操作的方式
本地操作和远程操作(通过网络)

⦁ 常用的文件操作函数
⦁ 获取文件信息函数

[php][/php] view plaincopyprint?

  1. <?php
  2.     //文件的基本信息
  3.     //1、fopen 打开文件,参数 URL及 打开方式MOde
  4.     $file_path = “/var/myphp/file/file.txt”;
  5.     //该函数返回一个指向文件的指针
  6.     //chmod($file_path, 777);
  7.     $fp = fopen($file_path, “r+”);
  8.     if($fp){
  9.         //fstat 获得文件的信息
  10.         $file_info = fstat($fp);
  11.         echo “<pre>”;
  12.         print_r($file_info);
  13.         echo “</pre>”;
  14.         echo “文件大小”.$file_info[‘size’];
  15.     } else{
  16.         echo “fopen file error!</br>”;
  17.     }
  18.     //关闭文件!!必须关闭
  19.     fclose($fp);
  20.     //****获取文件信息第二种方式
  21.     echo “<br/>”.filesize($file_path);
  22.     echo “<br/>”.filemtime($file_path);
  23.     echo “<br/>”.filectime($file_path);
  24.     echo “<br/>”.fileatime($file_path);
  25.  ?>

⦁ 读文件获得文件内容

[php][/php] view plaincopyprint?

  1. <?php
  2. /**
  3.  *
  4.  * @author jsh
  5.  * @version
  6.  */
  7.     $file_path = “/var/myphp/file/file.txt”;
  8.     //该函数返回一个指向文件的指针
  9.     /**********************一种读取方式***********************
  10.     if(file_exists($file_path)){
  11.         if($fp = fopen($file_path,”r+”)){
  12.             $con = fread($fp, filesize($file_path));
  13.             echo “文件的内容是:</br>”;
  14.             //注意:在默认情况下,我们得到的内容输出到网页后,是没有换行的
  15.             //不认\r\n 需要进行下面的替换
  16.             $con1 = str_replace(“\n”, “</br>”, $con);
  17.             echo $con1;
  18.         }else{
  19.             echo “file open error!”;
  20.         }
  21.     }else{
  22.         echo “file is not exist!”;
  23.     }
  24.    fclose($fp);
  25.    */
  26.     /***********************第二种读取方式****************
  27.     $con = file_get_contents($file_path);
  28.     $con1 = str_replace(“\n”, “</br>”, $con);
  29.     echo $con1;
  30.     */
  31.     /***********************第三种读取方式************/
  32.     if(file_exists($file_path)){
  33.         if($fp = fopen($file_path,”r+”)){
  34.             $buffer= 1024;
  35.             //一边读,一边判断是都到文件的末尾
  36.             while(!feof($fp)){
  37.                 $con = fread($fp, $buffer);
  38.                 echo “文件的内容是1111:</br>”;
  39.                  //注意:在默认情况下,我们得到的内容输出到网页后,是没有换行的
  40.                 //不认\r\n 需要进行下面的替换
  41.                 $con1 = str_replace(“\n”, “</br>”, $con);
  42.                 echo $con1;
  43.             }
  44.         }else{
  45.             echo “file open error!”;
  46.         }
  47.     }else{
  48.         echo “file is not exist!”;
  49.     }
  50.     fclose($fp);
  51.     //文件内容
  52.    $arr =  parse_ini_file($file_path);
  53.    echo “<pre>”;
  54.    print_r($arr);
  55.    echo “</pre>”;

⦁ 写文件

[php][/php] view plaincopyprint?

  1. <?php
  2.     //如何写文件
  3.     $file_path = “/var/myphp/file/file.txt”;
  4.     /*************传统的方法******************
  5.      if(file_exists($file_path)){
  6.         //如果是追加内容,使用a+
  7.         //如果是全新的写到文件,则使用w+,清空原文件再写入
  8.         if($fp = fopen($file_path,”a+”)){
  9.             $buf=”asd123123\n”;
  10.             fwrite($fp, $buf);
  11.          }else{
  12.               echo “file open error!”;
  13.           }
  14.      }else{
  15.           echo “file is not exist!”;
  16.      }
  17.      fclose($fp);
  18.      */
  19.     /***************另外方法**************/
  20.     $con = “woaini\n”;
  21.     //默认情况,即不加第三个参数,则是w+方式
  22.     file_put_contents($file_path, $con,FILE_APPEND);
  23.     echo “write Ok!”;
  24.     //注意,此函数在底层调用fopen fwrite,调用这个函数一般不使用循环写

⦁ 拷贝一个文件

[php][/php] view plaincopyprint?

  1. <?php
  2.     //拷贝一个文件
  3.     //copy函数
  4.     /***********注意***********
  5.      * 默认情况下路径是不能带汉字的,如果使用汉字
  6.      * 需要只用iconv(“utf-8″,”gb2312″,”date”);转换下
  7.      */
  8.     $file_path=”file.txt”;
  9.     $new_file=”1.txt”;
  10.     if(!copy($file_path, $new_file)){
  11.         echo “copy error!”;
  12.     }else{
  13.         echo “copy OK!”;
  14.     }

⦁ 文件下载
http://blog.csdn.net/sjin_1314/article/details/8981745
⦁ 文件创建,删除,文件的创建,删除

[php][/php] view plaincopyprint?

  1. <?php
  2.     //文件及文件夹的创建和删除
  3.     /************创建文件夹************
  4.     $dir_name=”/var/jsh1″;
  5.     if(!is_dir($dir_name)){
  6.         if(mkdir($dir_name)){
  7.             echo “创建文件成功!</br>”;
  8.         }else{
  9.             echo “创建失败!</br>”;
  10.         }
  11.     }else{
  12.         echo “文件夹存在!</br>”;
  13.     }
  14.     */
  15.     /*********创建多级目录*****/
  16.     $dir_name=”/var/jsh1/aaa/bbb/ccc”;
  17.     if(!is_dir($dir_name)){
  18.         if(mkdir($dir_name,0777,true)){
  19.             echo “创建文件成功!</br>”;
  20.         }else{
  21.             echo “创建失败!</br>”;
  22.         }
  23.     }else{
  24.         echo “文件夹存在!</br>”;
  25.     }
  26.     /*********删除文件夹********/
  27.     //如果文件夹下有文件,或者目录,均不能删除
  28.     if(rmdir(“/var/jsh1/aaa/bbb/ccc”)){
  29.         echo “删除文件夹Ok!</br>”;
  30.     }
  31.     /*************创建文件*********/
  32.     $file_name=”/var/jsh1/1.txt”;
  33.     if($fp = fopen($file_name,”w+”)){
  34.         $buf=”asd123123\n”;
  35.         fwrite($fp, $buf);
  36.     }else{
  37.         echo “file open error!”;
  38.     }
  39.     /***********删除文件******/
  40.     //2个方法 delete 和unlink
  41.     if(is_file($file_name)){
  42.         if(unlink($file_name)){
  43.             echo “删除成功!</br>”;
  44.         }
  45.     }else{
  46.         echo “文件不存在!</br>”;
  47.     }

标签