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

PHP fopen() 檔案開啟模式完整對照表 (r/w/a/x 等 8 種模式)

     編輯:PHP 綜合知識

fopen() 開啟檔案時,第二個參數指定模式,決定讀/寫/追加/建立/截斷/獨佔等行為。以下為 8 種標準模式完整對照。

模式對照表

模式讀寫指標初始位置檔案不存在截斷現有內容備註
r✅❌開頭失敗 (FALSE)❌唯讀開啟
r+✅✅開頭失敗❌讀寫開啟
w❌✅開頭建立新檔✅ 清空唯寫,會清空檔案
w+✅✅開頭建立新檔✅ 清空讀寫,會清空檔案
a❌✅結尾建立新檔❌追加寫入
a+✅✅結尾建立新檔❌追加讀寫
x❌✅開頭建立新檔❌獨佔建立,檔案存在則失敗
x+✅✅開頭建立新檔❌獨佔建立讀寫,檔案存在則失敗

常用情境選擇

  • 讀取設定檔/日誌:r 或 r+(需寫入時)。
  • 覆寫輸出檔案:w(自動清空)。
  • 記錄日誌/追加資料:a 或 a+(指標自動在結尾,多程序追加安全)。
  • 防止意外覆寫:x(如快取檔案首次建立)。

二進位模式 (Windows 相容)

在模式後加 b:rb, wb, ab, xb 等。Windows 下文字/二進位模式處理換行符不同(\r\n vs \n),建議統一使用二進位模式(rb, wb...)避免跨平台問題。

範例

<?php
// 讀取整個檔案
$handle = fopen('data.txt', 'rb');
$content = stream_get_contents($handle);
fclose($handle);

// 追加寫入日誌
$handle = fopen('app.log', 'ab');
fwrite($handle, date('c') . " Message\n");
fclose($handle);

// 獨佔建立快取檔(避免並發重複產生)
$handle = fopen('cache/data.cache', 'xb');
if ($handle) {
    fwrite($handle, $data);
    fclose($handle);
} else {
    // 檔案已存在,讀取現有快取
    $data = file_get_contents('cache/data.cache');
}
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved