標籤: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檔案系統