萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php中常用文件操作函數介紹

php中常用文件操作函數介紹

小編今天來給php初學者介紹php文件操作的常用函數使用方法總結,包括:文件讀寫,創建,查看文件屬性,文件刪除等等關於文件的操作。

在對一個文件進行訪問之前,一般我們都需要判斷文件是否存在,以免調用了不存在的文件導致錯誤。

php判斷文件是否存在函數:file_exists(),結構形式如下:

file_exist($string);

參數$string為一個指向文件或目錄的字符型變量,如果文件或目錄存在,則返回true,否則返回false。

實例:

 代碼如下 復制代碼

<?php
 /* 判斷post.php是否存在 */
 $file="post.php";
 if(file_exists($file)){
  echo "文件存在<br>";
 }
 else{
  echo "文件不存在<br>";
 }
 
 /* 判斷images目錄是否存在 */
 $category="images";
 if(file_exists($category)){
  echo "目錄存在";
 }
 else{
  echo "目錄不存在";
 } 
?>

php提供了一些訪問文件屬性的函數,可以獲取文件的大小、類型、修改時間等

獲取文件屬性函數

函數名 作用 參數及返回值 filesize($string) 獲取文件大小 參數$string為一個指向文件或目錄的字符型wordlink_affiliate">變量。函數的返回值為整型變量,返回文件的大小,返回結果會被緩存。如果出錯,則返回false。函數參數不能為遠程文件。 filetype($string) 獲取文件類型 參數$string為一個指向文件或目錄的字符型變量。函數的返回值為字符型變量,返回結果會被緩存。 filemtime($string) 獲取文件修改時間 參數$string為一個指向文件或目錄的字符型變量。函數的返回值為整型變量,返回文件的修改時間。 fileatime($string) 獲取文件訪問時間 參數$string為一個指向文件或目錄的字符型變量。函數的返回值為整型變量,返回文件的訪問時間。 fileperms($string) 獲取文件權限 參數$string為一個指向文件或目錄的字符型變量。函數的返回值為整型變量,返回文件的相應權限,返回結果會被緩存。函數參數不能為遠程文件。

實例:

 代碼如下 復制代碼

<?php
 $filename="php.txt";
 echo filesize($filename). "<br>";
 echo filetype($filename). "<br>";
 echo date("Y年 m月 d日",filemtime($filename)). "<br>";
 echo date("Y年 m月 d日",fileatime($filename)). "<br>";
 echo fileperms($filename). "<br>";
?>

在讀取文件之前,必須先打開一個文件,php提供fopen()函數可以打開本地文件,也可以打開遠程文件。其基本結構形式如下:

resource fopen (string $filename, string $mode)
參數filename是要打開的文件名。參數mode是要打開文件的方式,如下表所示:

fopen()中的mode參數說明
mode 說明 r 只讀方式打開,將文件指針指向文件頭。 r+ 讀寫方式打開,將文件指針指向文件頭。 w 寫入方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。 w+ 讀寫方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。 a 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。 a+ 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。 x 創建並以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗並返回 FALSE,並生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創建之。這和給 底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。此選項被 PHP 4.3.2 以及以後的版本所支持,僅能用於本地文件。 x+ 創建並以讀寫方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗並返回 FALSE,並生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創建之。這和給 底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。此選項被 PHP 4.3.2 以及以後的版本所支持,僅能用於本地文件。
fopen()函數返回一個值,這個值包含一個文件句柄的整數,用來向執行文件操作的函數標識該文件。這個值通常被稱為指針,指針就像內存地址中的一個個房間的門好。如果php打開文件失敗,那麼這個值就是flase。

實例:

 代碼如下 復制代碼


 <?php
 fopen("php.txt","a"); /* 寫入方式打開本地文件 */
 fopen("http://www.111cn.net/robots.txt","r"); /* 只讀方式打開遠程服務器文件 */
?>


首先建立一個”php.txt”的文件,內容如下:


 hello

php
1、fgetc()函數讀取文件中的某個字符,其結構形式如下:

 

string fgetc(resource $handle)

參數$handle是已經被打開的文件指針,函數返回當前文件指針所指向的字符。如果文件指針指向文件末尾,則返回false。

實例:

 代碼如下 復制代碼

<?php
 $filename=fopen('php.txt','r');
 $string=fgetc($filename); /* 讀取文件開頭第一個字符 */
 echo $string;
?>

 

文件被打開後文件指針通常位於文件的開始位置。但是當對文件執行了一定操作後就很難判斷此時php指針的位置了。

php文件指針位置查找函數ftell(),其結構形式如下:


 int ftell(resource $handle)
參數$handle是要查找指針的文件,通過該函數能夠判斷文件指針的位置,函數返回整數值。

實例:

 代碼如下 復制代碼

<?php
 $f=fopen("php.txt","r");
 fgets($f,2);
 echo ftell($f);
?>

php寫文件函數fwrite()可以將所需的內容寫入到目標文件中,結構形式如下:


int fwrite(resource $handle,string $string [,int $length])

參數$handle是要被寫入的文件,采納數$string是要寫入的內容,參數$length可選,是要寫入的長度。fwrite()函數返回寫入的字符數,出現錯誤時返回false。

實例:

 代碼如下 復制代碼

<?php
 $filename="php.txt";
 $str1="第一次寫入<br>";
 $str2="第二次寫入";
 if(is_writable($filename)){  /* is_writable()函數判斷文件是否可寫 */
  $file=fopen($filename,"w"); /* 以寫入方式打開文件 */
  $w1=fwrite($file,$str1); /* 將內容寫入文件 */
  $w2=fwrite($file,$str2);
   $file=fopen($filename,"r"); 
   if($w1) echo fgets($file); /* 讀取文件內容 */
   else echo "寫入不成功"; 
 }
 else echo "文件不可寫";
?>


php指針函數rewind()可以將文件位置指針設到文件的開頭,其結構形式如下:


bool rewind (resource $handle );

函數返回一個布爾值,如果成功則返回true,失敗則返回false。

實例:

 代碼如下 復制代碼

<?php
 $f=fopen("php.txt","r");
 echo fgets($f)."<br>";  /*輸出第一行*/
 echo fgets($f)."<br>";  /*輸出第二行*/
 rewind($f);             /*指針返回文件頭*/
 echo fgets($f);         /*輸出第一行*/   
?>

copyright © 萬盛學電腦網 all rights reserved