PHP 沒有獨立的「創建文件」函數,fopen() 既是打開文件,也是創建文件的關鍵。當指定寫入模式(w、a、x 等)打開不存在的文件時,fopen() 會自動創建並返回文件資源句柄。
resource fopen(string $filename, string $mode [, bool $use_include_path = false [, resource $context ]])
| 模式 | 說明 | 指針位置 | 創建文件 | 清空內容 |
|---|---|---|---|---|
| r | 只讀 | 開頭 | 否 | 否 |
| r+ | 讀寫 | 開頭 | 否 | 否 |
| w | 只寫 | 開頭 | 是 | 是 |
| w+ | 讀寫 | 開頭 | 是 | 是 |
| a | 追加 | 結尾 | 是 | 否 |
| a+ | 讀寫追加 | 結尾 | 是 | 否 |
| x | 排他創建/寫入 | 開頭 | 是(僅不存在時) | 否 |
| x+ | 排他創建/讀寫 | 開頭 | 是(僅不存在時) | 否 |
rb、wb)$file = 'data.txt';
$handle = fopen($file, 'w') or die("無法創建文件: $file");
fwrite($handle, "初始內容\n");
fclose($handle);
$handle = fopen($file, 'r'); $content = fread($handle, filesize($file)); fclose($handle); echo $content;
$handle = fopen($file, 'a') or die("打開失敗");
fwrite($handle, "新增行 1\n");
fwrite($handle, "新增行 2\n");
fclose($handle);
// r+:讀寫不清空,指針在開頭 $handle = fopen($file, 'r+'); fwrite($handle, "覆蓋開頭"); fclose($handle);
$fh = fopen("https://api.example.com/data.json", "r");
if ($fh) {
while (!feof($fh)) {
echo fgets($fh);
}
fclose($fh);
}
fclose() 關閉句柄fread() 全部內容,應分塊讀取file_put_contents() / file_get_contents() 簡化單次操作fopen() 系列b 模式or die() 或 try-catch 保證程序健壯性