php中熱門檔案操作函數介紹

來源:互聯網
上載者:User

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

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為一個指向檔案或目錄的字元型變數。函數的傳回值為整型變數,返迴文件的大小,返回結果會被緩衝。如果出錯,則返回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);         /*輸出第一行*/   
?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.