PHP打開(kāi)和關(guān)閉文件操作函數(shù)總結(jié)
在處理文件內(nèi)容之前,通常需要建立與文件資源的連接,即打開(kāi)文件。同樣,結(jié)束該資源的操作后,應(yīng)當(dāng)關(guān)閉連接資源。所謂打開(kāi)文件,實(shí)際是建立文件的各種有關(guān)信息,并使文件指針指向該文件,就可以發(fā)起輸入或輸出的實(shí)體聯(lián)系在一起,也就禁止再對(duì)該文件進(jìn)行操作。在PHP中可以通過(guò)標(biāo)準(zhǔn)函數(shù)fopen()建立與文件資源的連接,使用fclose()函數(shù)關(guān)閉通過(guò)fopen()函數(shù)打開(kāi)的文件資源。
①函數(shù)fopen()
該函數(shù)用來(lái)打開(kāi)一個(gè)文件,并在打開(kāi)一個(gè)文件時(shí),還需要指定如果使用它。也就是以哪種文件模式打開(kāi)文件資源。服務(wù)器上的操作系統(tǒng)文件必須知道要對(duì)打開(kāi)的文件進(jìn)行什么操作。操作系統(tǒng)需要了解在打開(kāi)這個(gè)文件之后,這個(gè)文件是否還允許其他的程序腳本再打開(kāi),還需要了解腳本的屬主用戶是否具有在這種方式下使用該文件的權(quán)限。該函數(shù)的原型如下所示:
resource fopen(string filename,string mode[,bool use_include_path[,resource zcontext]) //打開(kāi)文件
第一個(gè)參數(shù)需要提供要被打開(kāi)文件的URL。這個(gè)URL可以是腳本所在的服務(wù)器中的絕對(duì)路徑,也可以是相對(duì)路徑,還可以是網(wǎng)絡(luò)資源中的文件。第二個(gè)參數(shù)需要提供文件模式,文件模式可以告訴操作系統(tǒng)如何處理來(lái)自其他人或腳本的訪問(wèn)請(qǐng)求,以及一種用來(lái)檢查你是否有權(quán)訪問(wèn)這個(gè)特定文件的寫(xiě)法。當(dāng)在打開(kāi)文件時(shí)有三種選擇:
★打開(kāi)一個(gè)文件為了只讀、只寫(xiě)或者是讀和寫(xiě)。
★如果要寫(xiě)一個(gè)文件,可以覆蓋所有已有的文件內(nèi)容,或者需要將新數(shù)據(jù)追加到文件末尾。
★如果在一個(gè)區(qū)分二進(jìn)制文件和純文本文件的系統(tǒng)上寫(xiě)一個(gè)文件,還必須指定采用的方式。
函數(shù)fopen()也支持以上三中房四海的組合,只需要在第二個(gè)參數(shù)中提供一個(gè)字符串,指定將對(duì)文件進(jìn)行的操作即可。在下表中列出了可以使用的文件模式及其意義。

第三個(gè)參數(shù)是可選的,如果資源位于本地文件系統(tǒng),PHP則認(rèn)為可以使用本地路徑或是相對(duì)路徑來(lái)訪問(wèn)此資源。如果將這個(gè)參數(shù)設(shè)置為1,這樣就會(huì)使PHP考慮配置指令include_path中指定的路徑(在PHP的配置文件中設(shè)置)。
第四個(gè)參數(shù)也是可選的,fopen()函數(shù)允許文件名稱以協(xié)議名稱開(kāi)始,例如“http://”,并且在一個(gè)遠(yuǎn)程位置打開(kāi)該文件。通過(guò)設(shè)置這個(gè)參數(shù),還可以支持一些其他的協(xié)議。
如果fopen()函數(shù)成功地打開(kāi)一個(gè)文件,該函數(shù)將返回一個(gè)指向這個(gè)文件的文件指針。對(duì)該文件進(jìn)行操作所使用的讀、寫(xiě)以及其他的文件操作函數(shù),都要使用這個(gè)資源來(lái)訪問(wèn)該文件。如果打開(kāi)文件失敗,則返回FALSE。函數(shù)fopen()的是喲on個(gè)示例如下:
<?php
//使用絕對(duì)路徑打開(kāi)file.txt文件,選擇只讀模式,并返回資源$handle
$handle = fopen("/home/rasmus/file.txt", "r");
//訪問(wèn)文檔根目錄下的文件,也以只讀模式打開(kāi)
$handle = fopen("$_SERVER['DOCUMENT_ROOT']/data/info.txt","r");
//在Windows平臺(tái)上,轉(zhuǎn)義文件路徑的每個(gè)反斜線,或者用斜線,以二進(jìn)制和只寫(xiě)模式組合
$handle = fopen("C:\\data\\file.gif", "wb");
//使用相對(duì)路徑打開(kāi)file.txt文件,選擇只讀模式,并返回資源$handle
$handle = fopen("../data/info.txt", "r");
//打開(kāi)遠(yuǎn)程文件,使用HTTP協(xié)議只能以只讀的模式打開(kāi)
$handle = fopen("http://www.example.com", "r");
//使用FTP協(xié)議打開(kāi)遠(yuǎn)程文件,如果FTP服務(wù)器可寫(xiě),則可以以寫(xiě)的模式打開(kāi)
$handle = fopen("ftp://user:password@example.com", "w");
?>
②函數(shù)fclose()
資源類型屬于PHP的基本類型之一,一旦完成資源的處理,一定要將其關(guān)閉,否則可能會(huì)出現(xiàn)一些預(yù)料不到的錯(cuò)誤。函數(shù)fclose()就會(huì)撤銷(xiāo)fopen()打開(kāi)的資源類型,成功時(shí)返回TRUE,否則返回FALSE。參數(shù)必須是使用fopen()或fsockopen()函數(shù)打開(kāi)的已存的文件指針。在目錄操作中opendir()函數(shù)也是開(kāi)啟一個(gè)資源,使用closedir()將其關(guān)閉。
- PHP讀寫(xiě)文件高并發(fā)處理操作實(shí)例詳解
- PHP文件讀寫(xiě)操作相關(guān)函數(shù)總結(jié)
- php中讀寫(xiě)文件與讀寫(xiě)數(shù)據(jù)庫(kù)的效率比較分享
- php格式文件打開(kāi)的四種方法
- php實(shí)現(xiàn)以只讀方式打開(kāi)文件的方法
- php打開(kāi)文件fopen函數(shù)的使用說(shuō)明
- PHP 處理TXT文件(打開(kāi)/關(guān)閉/檢查/讀取)
- php文件怎么打開(kāi) 如何執(zhí)行php文件
- PHP文件打開(kāi)、關(guān)閉、寫(xiě)入的判斷與執(zhí)行代碼
- PHP文件打開(kāi)關(guān)閉及讀寫(xiě)操作示例解析
相關(guān)文章
PHP Post獲取不到非表單數(shù)據(jù)的問(wèn)題解決辦法
這篇文章主要介紹了PHP Post獲取不到非表單數(shù)據(jù)的問(wèn)題的解決辦法以及代碼分享,需要的朋友參考下。2018-02-02
php中print(),print_r(),echo()的區(qū)別詳解
本文介紹了php函數(shù)print(),print_r(),echo()的區(qū)別,這里推薦給大家,需要的朋友可以參考下2014-12-12
php目錄遍歷函數(shù)opendir用法實(shí)例
這篇文章主要介紹了php目錄遍歷函數(shù)opendir用法,以實(shí)例形式詳細(xì)分析了opendir原理與用法,是PHP進(jìn)行目錄操作的一個(gè)重要函數(shù),需要的朋友可以參考下2014-11-11
PHP7創(chuàng)建COOKIE和銷(xiāo)毀COOKIE的實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于PHP7創(chuàng)建COOKIE和銷(xiāo)毀COOKIE的實(shí)例方法,有需要的朋友們可以參考下。2020-02-02
PHP swoole和redis異步任務(wù)實(shí)現(xiàn)方法分析
這篇文章主要介紹了PHP swoole和redis異步任務(wù)實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式對(duì)比分析了swoole和redis異步任務(wù)具體實(shí)現(xiàn)方法及區(qū)別,需要的朋友可以參考下2019-08-08
php rmdir使用遞歸函數(shù)刪除非空目錄實(shí)例詳解
我們大家都知道,php rmdir()函數(shù)用于刪除空目錄,但如果要?jiǎng)h除非空目錄,我們必須將非空目錄中的文件或子目錄刪除,本文章向大家介紹php如何使用遞歸函數(shù)刪除非空目錄,需要的朋友可以參考一下2016-10-10

