程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 網站建設中PHP的編程8種常見文件操作

網站建設中PHP的編程8種常見文件操作

編輯:關於PHP編程

     文件和目錄的操作 


    PHP處理本地服務器上的文件和目錄是非常方便的,但有時候會出現權限和路徑相關的問題 

    1.打開文件 

    resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] ) 

    $handle = fopen(filename,mode)//打開文件,返回代表此文件的資源的句柄 

    文件名稱可以使用相對路徑或者絕對路徑也可以使用網絡協議模式,打開模式具有rr+ww+aa+xx+b 

    在操作二進制文件時如果沒有指定 'b' 標記,可能會碰到一些奇怪的問題,包括壞掉的圖片文件以及關於 rn 字符的奇怪問題。 

    為移植性考慮,強烈建議在用 fopen() 打開文件時總是使用 'b' 標記。 

    以下是幾種打開文件的方式 

    $fp = @fopen('log.txt',"rb"); 

    $fp = @fopen('../log.txt',"rb"); 

    $fp = @fopen("http://www.runer.com.cn/default.htm","rb");//還可以使用ftp和ghoper等協議,必須啟用php.ini文件中的allow_url_fopen選項 

    ////////////////////////////代碼部分//////////////////////////////////////// 

    $filename1 = "userinfo.txt";//目錄下或include_path中存在這個文件 

    $filename2 = "test.txt";//目錄下或include_path並不存在這個文件 

    $resource1 = fopen($filename1,"rb"); 

    @$resource2 = fopen($filename2,"rb");//因為目錄中不存在這個文件,並且並未使用或include_path尋找包含文件所在路徑則此操作會報錯,使用錯誤抑制符@可以迫使浏覽器不輸出錯誤信息 

    if($resource1) 

    echo "打開文件{$filename1}成功"; 

    if(!@fopen($filename2,"r")) 

    echo "打開文件{$filename2}不成功"; 

    ////////////////////////////////////////////////////////////////////////// 

    ---------------------輸出結果---------------------------------------- 

    打開文件userinfo.txt成功 

    --------------------------------------------------------------------- 

    2.使用完畢文件後,要顯式的告訴PHP已經使用完文件,讓操作系統確保將文件的所有內容正確地從緩沖區刷新到硬盤 

    使用fclose()關閉文件, 

    bool fclose ( resource handle )//關閉一個已打開的文件指針

    3.讀取文件,fopen函數的mode參數允許讀取,PHP提供了幾個函數從文件讀取數據 

    string fgets ( int handle [, int length] )從文件指針中讀取一行,在二進制文件上嘗試fgets會產生不可預測的結果 

    如果不指定長度,默認讀取1K數據,碰到換行符(包括在返回值中)、EOF 或者已經讀取了 length - 1 字節後停止 

    string fgetss ( resource handle [, int length [, string allowable_tags]] )從文件指針中讀取一行並過濾掉 HTML 標記 

    fgetc()讀取單個字符 

    fread()讀取任意二進制數據 

    ////////////////////////////代碼部分//////////////////////////////////////// 

    $handle = fopen ("test.jpg", "rb"); 

    $c; 

    while (!feof($handle)) { 

    $contents .= @fread($handle, 8192);//循環讀取並將其合並為一個大塊文件 



    fclose($handle); 

    ////////////////////////////////////////////////////////////////////////// 

    ---------------------輸出結果---------------------------------------- 

    --------------------------------------------------------------------- 

    4.判斷文件讀取的狀態 

    每個文件句柄都有一個文件指針,或者一個指出下一個操作將在文件中哪裡發生的游標,根據fopen函數的mode參數 

    文件指針最初位於文件的開頭(0),或者文件的末尾 

    feof()可以判斷文件是否已經到末尾(到末尾後函數返回TRUE) 

    filesize()函數返回文件的大小 5.寫入文件 

    fwrite()函數執行文件寫入 

    ////////////////////////////代碼部分//////////////////////////////////////// 

    $filename = 'test.txt'; 

    $somec;

     

    // 首先我們要確定文件存在並且可寫。 

    if (is_writable($filename)) { 

    // 在這個例子裡,我們將使用添加模式打開$filename, 

    // 因此,文件指針將會在文件的開頭, 

    // 那就是當我們使用fwrite()的時候,$somecontent將要寫入的地方。 

    if (!$handle = fopen($filename, 'a')) { 

    echo "不能打開文件 $filename"; 

    exit; 



    // 將$somecontent寫入到我們打開的文件中。 

    if (fwrite($handle, $somecontent) === FALSE) { 

    echo "不能寫入到文件 $filename"; 

    exit; 



    echo "成功地將 $somecontent 寫入到文件$filename"; 

    fclose($handle); 

    } else { 



    echo "文件 $filename 不可寫"; 

    ////////////////////////////////////////////////////////////////////////// 

    ---------------------輸出結果---------------------------------------- 

    成功地將 添加這些文字到文件 寫入到文件test.txt 

    --------------------------------------------------------------------- 

    對於二進制數據,必須指定第三個參數,它包含寫入到磁盤的數據字節數 

    $result = @fwrite($fp,$binary_data,mb_strlen($binary_data,'8bit'));

     


     

      6.文件權限和其他信息 

    is_readable()//判斷文件是否可讀 

    is_writeable()//判斷文件是否可寫 

    is_writable()//判斷文件是否可寫 

    fileperms()//判斷文件的權限(UNIX風格的文件權限測試函數) 

    file_exists()//是否存在這個文件 

    fileowner()//判斷文件所屬用戶 

    filegroup()//判斷文件所屬組 

    7.刪除和重命名文件 

    unlink()//刪除文件 

    rename()//重命名文件 

    8.訪問目錄 

    目錄訪問建議使用前向斜線"/",兼容windows和unix系統 

    basename()//返回不包括路徑信息的文件名 

    dirname()//返回文件名的目錄部分 

    realpath()//接受相對路徑,返回文件的絕對路徑 

    pathinfo()//提取給定路徑的目錄名,基本文件名和擴展名 

    opendir()//打開目錄,返回資源句柄 

    readdir()//讀取目錄項 

    rewinddir()//將讀取指針返回開頭 

    closedir()//關閉讀取句柄 

    chdir()//改變當前腳本執行期間的當前工作目錄 

    mkdir()//創建目錄 

    rmdir()刪除目錄 

    ////////////////////////////代碼部分//////////////////////////////////////// 

    ////////////////////////////////////////////////////////////////////////// 

    ---------------------輸出結果---------------------------------------- 

    filename: web : filetype: dir 

    filename: study : filetype: dir

    轉載於www.abm163.com

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved