PHP檔案系統

來源:互聯網
上載者:User

標籤:over   webroot   mil   ext   讀取檔案   data   atime   microsoft   close   

讀取檔案內容

PHP具有豐富的檔案操作函數。最簡單的讀取檔案的函數為file_get_contents,能夠將整個檔案所有讀取到一個字串中。

$content = file_get_contents(‘./test.txt‘);

file_get_contents也能夠通過參數控制讀取內容的開始點以及長度。

$content = file_get_contents(‘./test.txt‘, null, null, 100, 500);

PHP也提供類似於C語言操作檔案的方法,使用fopen,fgets,fread等方法,fgets能夠從檔案指標中讀取一行,freads能夠讀取指定長度的字串。

$fp = fopen(‘./text.txt‘, ‘rb‘);while(!feof($fp)) {    echo fgets($fp); //讀取一行}fclose($fp);

 

$fp = fopen(‘./text.txt‘, ‘rb‘);$contents = ‘‘;while(!feof($fp)) {    $contents .= fread($fp, 4096); //一次讀取4096個字元}fclose($fp);

使用fopen開啟的檔案,最好使用fclose關閉檔案指標,以避免檔案控制代碼被佔用。

推斷檔案是否存在

普通情況下在對檔案進行操作的時候須要先推斷檔案是否存在,PHP中經常使用來推斷檔案存在的函數有兩個is_file與file_exists.

$filename = ‘./test.txt‘;if (file_exists($filename)) {    echo file_get_contents($filename);}

假設僅僅是推斷檔案存在,使用file_exists即可。file_exists不僅能夠推斷檔案是否存在,同一時候也能夠推斷檔案夾是否存在,從函數名能夠看出。is_file是確切的推斷給定的路徑是否是一個檔案。

$filename = ‘./test.txt‘;if (is_file($filename)) {    echo file_get_contents($filename);}

更加精確的能夠使用is_readable與is_writeable在檔案是否存在的基礎上,推斷檔案是否可讀與可寫。

$filename = ‘./test.txt‘;if (is_writeable($filename)) {    file_put_contents($filename, ‘test‘);}if (is_readable($filename)) {    echo file_get_contents($filename);}
寫入內容到檔案

與讀取檔案相應。PHP寫檔案也具有兩種方式,最簡單的方式是採用file_put_contents。

$filename = ‘./test.txt‘;$data = ‘test‘;file_put_contents($filename, $data);

上例中,$data參數能夠是一個一維數組,當$data是數組的時候,會自己主動的將數組串連起來,相當於$data=implode(‘‘, $data);

相同的,PHP也支援類似C語言風格的操作方式,採用fwrite進行檔案寫入。

$fp = fopen(‘./test.txt‘, ‘w‘);fwrite($fp, ‘hello‘);fwrite($fp, ‘world‘);fclose($fp);
取得檔案的改動時間

檔案有非常多元屬性,包含:檔案的全部者、建立時間、改動時間、最後的訪問時間等。

fileowner:獲得檔案的全部者filectime:擷取檔案的建立時間filemtime:擷取檔案的改動時間fileatime:擷取檔案的訪問時間

當中最經常使用的是檔案的改動時間,通過檔案的改動時間。能夠推斷檔案的時效性,經經常使用在靜態檔案或者快取資料的更新。

$mtime = filemtime($filename);echo ‘改動時間:‘.date(‘Y-m-d H:i:s‘, filemtime($filename));
取得檔案的大小

通過filesize函數能夠取得檔案的大小。檔案大小是以位元組數表示的。

$filename = ‘/data/webroot/usercode/code/resource/test.txt‘;$size = filesize($filename);

假設要轉換檔大小的單位。能夠自訂函數來實現。

function getsize($size, $format = ‘kb‘) {    $p = 0;    if ($format == ‘kb‘) {        $p = 1;    } elseif ($format == ‘mb‘) {        $p = 2;    } elseif ($format == ‘gb‘) {        $p = 3;    }    $size /= pow(1024, $p);    return number_format($size, 3);}$filename = ‘/data/webroot/usercode/code/resource/test.txt‘;$size = filesize($filename);$size = getsize($size, ‘kb‘); //進行單位轉換echo $size.‘kb‘;

值得注意的是,沒法通過簡單的函數來取得檔案夾的大小。檔案夾的大小是該檔案夾下全部子檔案夾以及檔案大小的總和,因此須要通過遞迴的方法來迴圈計算檔案夾的大小。

刪除檔案

跟Unix系統命令類似,PHP使用unlink函數進行檔案刪除。

unlink($filename);

刪除目錄使用rmdir函數,目錄必須為空白,假設不為空白或者沒有許可權則會提示失敗。

rmdir($dir);

假設檔案夾中存在檔案。能夠先迴圈刪除檔案夾中的全部檔案。然後再刪除該檔案夾。迴圈刪除能夠使用glob函數遍曆全部檔案。

foreach (glob("*") as $filename) {   unlink($filename);}

PHP檔案系統

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.