php专区

 首页 > php专区 > PHP高级 > 文件上传 > php入门教程之文件操作基础 - php文件操作

php入门教程之文件操作基础 - php文件操作

分享到:
【字体:
导读:
          在有些场合中需要以文件的形式来对内容进行存储,通常这时候需要对文件进行一系列的操作,PHP中对于文件的操作跟其他计算机程序设计语言对文...

php入门教程之文件操作基础

在有些场合中需要以文件的形式来对内容进行存储,通常这时候需要对文件进行一系列的操作,PHP中对于文件的操作跟其他计算机程序设计语言对文件的操作类似,对于文件的操作主要包括三个部分,以及围绕这三部分提供的辅助性函数来完成文件操作的工作.

(1)文件的创建与打开;

(2)文件的操作;

(3)文件的关闭;

在PHP中,通过一系列的函数来完成文件的操作,常用的函数及其简要说明罗列如下:

//文件打开,完成文件打开(在文件不存在时可创建文件),依赖于文件中模式的不同而具有不同的操作resource fopen ( string $filename ,string $mode [, bool $use_include_path = false [, resource $context ]] )

//$filename 打开或者要创建文件的路径及文件名,为了便于移植,使用反斜杠/为佳

//$mode 是文件打开的模式,有很多模式,比较常用的r,w,a,同样为了便于移植,建议mode中增加b(二进制)

//通常读文件为 rb ,写文件为 ab,分别表示以二进制读文件及以二进制向文件追加内容

//在文件打开操作过程中出现错误请首先检查文件所在的路径的权限设置

 

实例代码如下:

  1. //文件操作函数 
  2.  
  3. //写操作相关函数 
  4. //把$string的内容写到文件指针$handle 
  5. int fwrite ( resource $handle , string $string [, int $length ] )   
  6. //函数是fwrite的别名函数 
  7. fputs()  
  8.  
  9. //也能完成写操作,不同的是集成了fopen(),fwrite(),fclose(),使用该函数不用再打开关闭文件 
  10. int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )  
  11.  
  12. //读操作相关函数 
  13. //逐行读取 
  14. string fgets ( resource $handle [, int $length ] )  
  15. //逐行读,能够过滤标记 
  16. string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )  
  17. //逐行读,能够根据定界符输出到数组 
  18. array fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape = '' ]]]] ) 
  19. //一次性读取一个文件并将文件内容发送到标准输出,包含了文件打开与文件关闭操作 
  20. int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] ) 
  21. //先要打开文件,然后将文件指针所指向的文件内容发送到标准输出 
  22. int fpassthru ( resource $handle ) 
  23. //把结果发送到一个数组中 
  24. array file ( string $filename [, int $flags = 0 [, resource $context ]] ) 
  25. //一次读取一个字符 
  26. string fgetc ( resource $handle ) 
  27. //读取任意长度字节的内容 
  28. string fread ( resource $handle , int $length ) 
  29.  
  30. //文件关闭 
  31. bool fclose ( resource $handle ) 
  32.  
  33. //文件操作中常用的函数 
  34. //检查文件或目录是否存在 
  35. bool file_exists ( string $filename ) 
  36. //获取文件大小,返回文件大小的字节数 
  37. int filesize ( string $filename ) 
  38. //删除文件 
  39. bool unlink ( string $filename [, resource $context ] ) 
  40. //复位文件指针位置 
  41. bool rewind ( resource $handle ) 
  42. //在文件指针中定位 
  43. int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] ) 

函数的具体详细的说明在php.net上可以查到,下面练习一下文件的操作,练习名称为『简易日记』,需求如下:

(1)每日记录的内容以年-月-日.txt保存在数据目录下;

(2)首页写日记,并显示以往的记录;

(3)显示单页记录内容;

首页(index.php)实例代码如下:

  1.  
  2.  
  3.    
  4.     "utf-8"
  5.     简易日记--php文件操作练习 
  6.      
  7.    
  8.    
  9.     

    我的日记本

     
  10.     

    class="active">写日记

     
  11.     "writediary" method="POST" action="diaryprocessed.php"
  12.       

    日记主题

     
  13.       "text" name="diarytopic" size="60" maxlength="100" /> 
  14.       

    日记内容

     
  15.       "diarycontents" rows="10" cols="53"
  16.       

    class="btn" type="submit" name="save" value="保存" />

     
  17.      
  18.     
     
  19.     

    class="active">日记列表 

     
  20.     
     
  21.     
  22.       $handler = opendir($_SERVER['DOCUMENT_ROOT'] . '/phpcodes/diarydatas/'); 
  23.       while (($diaryname = readdir($handler)) !== false) { 
  24.         if($diaryname != "." && $diaryname != ".." ) { 
  25.           $files[] = $diaryname
  26.         } 
  27.       } 
  28.       closedir($handler); 
  29.       foreach($files as $value) { 
  30.         echo " . substr($value,0,(strlen($value)-4)) . ">$value" . " | "
  31.       } 
  32.     ?> 
  33.    
  34.  
  35.  
  36. 保存处理页(diaryprocessed.php) 
  37.  代码如下 复制代码 
  38. header('Content-Type:text/html; charset=utf-8'); 
  39.  
  40. $date = gmdate('Y-m-d', time() + 3600 * 8); 
  41.  
  42. $diarytopic = $_POST['diarytopic']; 
  43.  
  44. $diarycontents = $_POST['diarycontents']; 
  45.  
  46. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; 
  47.  
  48. $output = $diarytopic . "n" . $diarycontents . "n"
  49.  
  50. $fp = fopen($DOCUMENT_ROOT . '/phpcodes/diarydatas/' . $date . '.txt''ab'); 
  51.  
  52. flock($fp,LOCK_EX); 
  53.  
  54. if(!$fp) { 
  55.   echo "

    当前不能处理您提交的日志,请稍后再试!

    "
  56.   echo "index.htm">返回"
  57.  
  58. fwrite($fp,$output); 
  59.  
  60. flock($fp,LOCK_UN); 
  61.  
  62. fclose($fp); 
  63.  
  64. echo '日记提交成功!'
  65. echo "index.htm">返回"
  66.  
  67. 查看内容页(viewdiary.php) 
  68.  代码如下 复制代码 
  69.   $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; 
  70. ?> 
  71.  
  72.  
  73.    
  74.     "utf-8"
  75.     简易日记 
  76.      
  77.    
  78.    
  79.     "index.php">写日记 
  80.     
     
  81.     
  82.       $diaryname = $_GET['id']; 
  83.       $filepath = $DOCUMENT_ROOT . '/phpcodes/diarydatas/' . $diaryname . '.txt'
  84.       if (file_exists($filepath)) { 
  85.         $fp = fopen($filepath'rb'); 
  86.         echo nl2br(fread($fp,filesize($filepath))); 
  87.         fclose($fp); 
  88.       } 
  89.     ?> 
  90.    
  91.  
分享到:
为什么有些人php代码最后不加?> - php文...
为什么有些人php代码最后不加?> 为什么有些人php代码最后不加?>下面我给大家介绍介绍. 为什么有些人php代码最后不加“?>”呢?起初我也不知道,后来百度了才知道.网上看教程,别人都有“?>”结束标签,但是看别人的源码很多人都没有加,原来不加结束标签可以避免尾部的空白字符意外输出,对代码...
php入门教程之位操作 - php文件操作
php入门教程之位操作 本文章来给大家介绍一篇很简单的入门教程就是php位操作了,各位有需要了解的朋友可参考. 1.&(与) 将数值转化为二进制后 都为1则为1否则为0 $a = 10; //1010 $b = 12; //1100 echo $a & $b; //得到的是8 => 1000 2.| (或) 将数值转化为二进制后 只要有一个是1则...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……