首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 目錄與文件操作大全:路徑解析、讀寫、鎖定、掃描、權限、磁盤空間

     編輯:PHP 綜合知識

前言

文件系統操作是後端開發基礎能力。本文匯總 13 個 Demo,覆蓋路徑解析、屬性獲取、讀寫模式、資源鎖定、目錄遍歷、磁盤空間查詢等實戰技巧。

一、路徑解析與屬性(Demo1-5)

$path = 'C:\AppServ\www\Demo1.php';
echo basename($path);   // Demo1.php
echo dirname($path);    // C:\AppServ\www
print_r(pathinfo($path));
// ['dirname'=>'...', 'basename'=>'...', 'extension'=>'php', 'filename'=>'Demo1']

echo realpath('../index.php'); // 相對轉絕對路徑
echo round(filesize($path)/1024, 2) . ' KB';
echo round(disk_free_space('C:')/1024/1024/1024, 2) . ' GB'; // 可用空間
echo round(disk_total_space('C:')/1024/1024/1024, 2) . ' GB'; // 總空間

二、文件時間屬性(Demo5)

date_default_timezone_set('Asia/Shanghai');
echo '訪問時間:' . date('Y-m-d H:i:s', fileatime($path));
echo '修改時間:' . date('Y-m-d H:i:s', filemtime($path)); // 內容修改
echo '狀態修改:' . date('Y-m-d H:i:s', filectime($path)); // 權限/屬主變更

三、文件讀寫核心模式(Demo6-10)

1. 低級資源流(fopen 系列)

模式含義指針位置創建/截斷
r只讀開頭不創建
w只寫開頭創建/截斷
a追加結尾創建
r+/w+/a+讀寫開頭/開頭/結尾同上
b二進制安全(推薦加上)——
$fp = fopen('file.txt', 'ab'); // 追加二進制
fwrite($fp, "內容\r\n");
flock($fp, LOCK_EX); // 獨佔鎖
// ... 寫入 ...
flock($fp, LOCK_UN); // 解鎖
fclose($fp);

2. 高級便捷函數(PHP 5+ 推薦)

  • file_put_contents($file, $data, FILE_APPEND|LOCK_EX):原子寫入
  • file_get_contents($file):讀整個文件到字符串
  • file($file):按行讀入數組
  • readfile($file):直接輸出到瀏覽器(大文件下載)

3. 逐行/逐字符讀取(Demo8-10)

$fp = fopen('file.txt', 'r');
while (!feof($fp)) {
    echo fgets($fp); // 或 fgetc($fp) 單字符
}
fclose($fp);

四、文件/目錄管理(Demo11-13)

// 存在性檢查
if (file_exists('file.txt')) { ... }

// 刪除文件
unlink('a.txt');

// 目錄操作
$dir = opendir('C:\AppServ\www');
while ($file = readdir($dir)) { echo $file . '<br>; }
closedir($dir);

// 掃描目錄(含 . 和 ..)
print_r(scandir('path'));

// 刪除空目錄
rmdir('delMe');

// 重命名/移動(文件/目錄通用)
rename('old.txt', 'new.txt');

五、最佳實踐

  1. 讀寫大文件分塊處理,避免 file_get_contents 爆內存。
  2. 2. 併發寫入必須加鎖(flock 或 file_put_contents(..., LOCK_EX))。 3. 路徑拼接用 DIRECTORY_SEPARATOR 或 __DIR__ . '/sub',跨平台兼容。 4. 上傳文件重命名存儲,防同名覆蓋與路徑遍歷攻擊。 5. 定期清理臨時目錄,防止 inode 耗盡。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved