本文介紹了函數fopen(),fclose()的用法及注意事項:
在處理檔案內容之前,通常需要建立與檔案資源的串連,即開啟檔案。同樣,結束該資源的操作後,應當關閉串連資源。所謂開啟檔案,實際是建立檔案的各種有關資訊,並使檔案指標指向該檔案,就可以發起輸入或輸出的實體聯絡在一起,也就禁止再對該檔案進行操作。在PHP中可以通過標準函數fopen()建立與檔案資源的串連,使用fclose()函數關閉通過fopen()函數開啟的檔案資源。
①函數fopen()
該函數用來開啟一個檔案,並在開啟一個檔案時,還需要指定如果使用它。也就是以哪種檔案模式開啟檔案資源。伺服器上的作業系統檔案必須知道要對開啟的檔案進行什麼操作。作業系統需要瞭解在開啟這個檔案之後,這個檔案是否還允許其他的程式指令碼再開啟,還需要瞭解指令碼的屬主使用者是否具有在這種方式下使用該檔案的許可權。該函數的原型如下所示:
代碼如下:
resource fopen(string filename,string mode[,bool use_include_path[,resource zcontext]) //開啟檔案
第一個參數需要提供要被開啟檔案的URL。這個URL可以是指令碼所在的伺服器中的絕對路徑,也可以是相對路徑,還可以是網路資源中的檔案。第二個參數需要提供檔案模式,檔案模式可以告訴作業系統如何處理來自其他人或指令碼的訪問請求,以及一種用來檢查你是否有權訪問這個特定檔案的寫法。當在開啟檔案時有三種選擇:
開啟一個檔案為了唯讀、唯寫或者是讀和寫。
如果要寫一個檔案,可以覆蓋所有已有的檔案內容,或者需要將新資料追加到檔案末尾。
如果在一個區分二進位檔案和純文字檔案的系統上寫一個檔案,還必須指定採用的方式。
函數fopen()也支援以上三中房四海的組合,只需要在第二個參數中提供一個字串,指定將對檔案進行的操作即可。在下表中列出了可以使用的檔案模式及其意義。
第三個參數是可選的,如果資源位於本地檔案系統,PHP則認為可以使用本地路徑或是相對路徑來訪問此資源。如果將這個參數設定為1,這樣就會使PHP考慮配置指令include_path中指定的路徑(在PHP的設定檔中設定)。
第四個參數也是可選的,fopen()函數允許檔案名稱以協議名稱開始,例如“http://”,並且在一個遠程位置開啟該檔案。通過設定這個參數,還可以支援一些其他的協議。
如果fopen()函數成功地開啟一個檔案,該函數將返回一個指向這個檔案的檔案指標。對該檔案進行操作所使用的讀、寫以及其他的檔案操作函數,都要使用這個資源來訪問該檔案。如果開啟檔案失敗,則返回FALSE。函數fopen()的是喲on個樣本如下:
代碼如下:
<?php//使用絕對路徑開啟file.txt檔案,選擇唯讀模式,並返回資源$handle$handle = fopen("/home/rasmus/file.txt", "r");//訪問主目錄下的檔案,也以唯讀模式開啟$handle = fopen("$_SERVER['DOCUMENT_ROOT']/data/info.txt","r"); //在Windows平台上,轉義檔案路徑的每個反斜線,或者用斜線,以二進位和唯寫模式組合$handle = fopen("C:\\data\\file.gif", "wb");//使用相對路徑開啟file.txt檔案,選擇唯讀模式,並返回資源$handle$handle = fopen("../data/info.txt", "r");//開啟遠程檔案,使用HTTP協議只能以唯讀模式開啟$handle = fopen("http://www.example.com", "r");//使用FTP協議開啟遠程檔案,如果FTP伺服器可寫,則可以以寫的模式開啟$handle = fopen("ftp://user:password@example.com", "w");?>
②函數fclose()
資源類型屬於PHP的基本類型之一,一旦完成資源的處理,一定要將其關閉,否則可能會出現一些預料不到的錯誤。函數fclose()就會撤銷fopen()開啟的資源類型,成功時返回TRUE,否則返回FALSE。參數必須是使用fopen()或fsockopen()函數開啟的已存的檔案指標。在目錄操作中opendir()函數也是開啟一個資源,使用closedir()將其關閉。