PHP文件系統(tǒng)之讀取文件內(nèi)容
PHP具有豐富的文件操作函數(shù)轧膘,最簡單的讀取文件的函數(shù)為file_get_contents钥组,可以將整個文件全部讀取到一個字符串中萄涯。
$content = file_get_contents('./test.txt');
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關(guān)閉文件指針湿硝,以避免文件句柄被占用薪前。
PHP文件系統(tǒng)之判斷文件是否存在
一般情況下在對文件進行操作的時候需要先判斷文件是否存在,PHP中常用來判斷文件存在的函數(shù)有兩個is_file與file_exists.
<?php
$filename = 'f.txt';
if (file_exists($filename)) {
echo file_get_contents($filename);
}
?>
如果只是判斷文件存在关斜,使用file_exists就行示括,file_exists不僅可以判斷文件是否存在,同時也可以判斷目錄是否存在蚤吹,從函數(shù)名可以看出例诀,is_file是確切的判斷給定的路徑是否是一個文件。
<?php
$filename = 'f.txt';
if (is_file($filename)) {
echo file_get_contents($filename);
}
?>
更加精確的可以使用is_readable與is_writeable在文件是否存在的基礎(chǔ)上裁着,判斷文件是否可讀與可寫。
<?php
$filename = 'f.txt';
if (is_writeable($filename)) {//判斷可寫
file_put_contents($filename, 'test');//改變文件內(nèi)容
}
if (is_readable($filename)) {//判斷可讀
echo file_get_contents($filename);
}
?>
PHP文件系統(tǒng)之取得文件的修改時間
文件有很多元屬性拱她,包括:文件的所有者二驰、創(chuàng)建時間、修改時間秉沼、最后的訪問時間等桶雀。
fileowner:獲得文件的所有者
filectime:獲取文件的創(chuàng)建時間
filemtime:獲取文件的修改時間
fileatime:獲取文件的訪問時間
其中最常用的是文件的修改時間,通過文件的修改時間唬复,可以判斷文件的時效性矗积,經(jīng)常用在靜態(tài)文件或者緩存數(shù)據(jù)的更新。
<?php
$filename = 'f.txt';
$mtime = filemtime($filename);
echo '修改時間:'.date('Y-m-d H:i:s', filemtime($filename));
?>
//修改時間:2017-02-16 22:39:06
<?php
$filename = 'f.txt';
echo '所有者:'.fileowner($filename).'<br>';
echo '創(chuàng)建時間:'.date('Y-m-d H:i:s',filectime($filename)).'<br>';
echo '修改時間:'.date('Y-m-d H:i:s',filemtime($filename)).'<br>';
echo '最后訪問時間:'.date('Y-m-d H:i:s',fileatime($filename)).'<br>';
$mtime = filemtime($filename);
//給$mtime賦值為文件的修改時間
//通過計算時間差 來判斷文件內(nèi)容是否有效
if (time() - $mtime > 3600) {
echo '<br>緩存已過期';
} else {
echo file_get_contents($filename);
}
?>
PHP文件系統(tǒng)之取得文件的大小
通過filesize函數(shù)可以取得文件的大小敞咧,文件大小是以字節(jié)數(shù)表示的棘捣。
<?php
$filename = 'f.txt';
$size = filesize($filename);
echo $size;//獲取文件大小,文件大小是以字節(jié)數(shù)表示
?>
如果要轉(zhuǎn)換文件大小的單位休建,可以自己定義函數(shù)來實現(xiàn)乍恐。
<?php
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 = 'f.txt';
$size = filesize($filename);
$size = getsize($size, 'kb'); //進行單位轉(zhuǎn)換
echo $size.'kb';
?>