PHP学习笔记 - 进阶篇(7)
PHP學習筆記 - 進階篇(7)
文件操作
讀取文件內容
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:獲取文件的訪問時間
其中最常用的是文件的修改時間,通過文件的修改時間,可以判斷文件的時效性,經常用在靜態文件或者緩存數據的更新。
取得文件的大小
通過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); }轉載于:https://www.cnblogs.com/wanglongshuai/p/5204046.html
總結
以上是生活随笔為你收集整理的PHP学习笔记 - 进阶篇(7)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在人山人海里,你不必记得我
- 下一篇: 差分信号