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

PHP 檔案操作核心函數大全:讀寫、建立、檢查與指標控制

     編輯:PHP 相關知識

前言

檔案操作是後端開發的基石。PHP 提供豐富的內建函數,從簡單的單次讀寫到精細的指標控制皆有對應工具。本文系統整理最常用的檔案函數,附上實戰範例與最佳實踐。

1. file_exists — 檢查檔案或目錄是否存在

回傳布林值,是執行讀寫前的必要防禦性檢查。

<?php
$path = 'C:\\data\\config.ini';
if (file_exists($path)) {
    echo "檔案存在:$path";
} else {
    echo "找不到檔案:$path";
}
// 也可檢查目錄
var_dump(file_exists('C:\\data\\logs'));
提醒:Windows 路徑在雙引號字串中需雙重跳脫 \\\\,或改用正斜線 / 避免混淆。

2. file_get_contents — 一次讀取整個檔案

最簡潔的讀取方式,回傳字串;失敗回傳 false。

<?php
$content = @file_get_contents('C:/data/hello.txt');
if ($content !== false) {
    echo $content;
} else {
    echo '讀取失敗';
}

適用於小型檔案(設定檔、模板);大檔案請改用串流讀取避免記憶體耗盡。

3. fopen / fclose — 開啟與關閉檔案指標

提供精細控制,支援多種模式(r、w、a、x 及其 + 變體)。

常用模式對照表

模式說明指標位置建立檔案截斷檔案
r唯讀開頭否否
r+讀寫開頭否否
w唯寫開頭是是
w+讀寫開頭是是
a唯寫結尾是否
a+讀寫結尾是否
x唯寫開頭僅不存在時否
x+讀寫開頭僅不存在時否

基本開啟/關閉範例

<?php
$fp = fopen('C:/data/info.txt', 'r');
if ($fp) {
    // 操作檔案...
    fclose($fp); // 必須關閉釋放資源
}

4. fgets — 逐行讀取

搭配 feof() 判斷結尾,適合大型日誌或 CSV 解析。

<?php
$fp = fopen('C:/data/sites.txt', 'r');
if ($fp) {
    while (!feof($fp)) {
        $line = fgets($fp);
        if ($line !== false) {
            echo "站點: " . htmlspecialchars(trim($line)) . "<br>";
        }
    }
    fclose($fp);
}

5. fwrite — 寫入資料到指標

回傳寫入位元組數;需先以可寫模式開啟。

<?php
$fp = fopen('C:/data/write.txt', 'w');
if ($fp) {
    $bytes = fwrite($fp, "It is awesome.\n");
    echo "寫入 $bytes 位元組";
    fclose($fp);
}

若需追加而非覆蓋,改用 a 模式開啟。

6. file_put_contents — 簡化版寫入

內部封裝 fopen/fwrite/fclose,支援 FILE_APPEND 旗標追加寫入。

<?php
$path = 'C:/data/log.txt';
// 覆蓋寫入
file_put_contents($path, "首行記錄\n");
// 追加寫入
file_put_contents($path, "新增記錄\n", FILE_APPEND);

回傳寫入位元組數,失敗回傳 false。現代 PHP 開發首選此函數,程式碼更簡潔易維護。

實戰建議總結

  • 小檔案、一次性讀寫 → file_get_contents / file_put_contents
  • 大檔案、逐行處理、需精確控制指標 → fopen 系列
  • 永遠檢查回傳值,善用 === false 嚴格比較
  • Windows 路徑建議統一使用正斜線 /,跨平台相容性最佳
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved