PHP Conference Japan 2024

SplFileObject::ftruncate

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

SplFileObject::ftruncate將檔案截斷到指定長度

說明

public SplFileObject::ftruncate(int $size): bool

將檔案截斷到 size 位元組。

參數

size

要截斷的大小。

注意事項:

如果 size 大於檔案,則會以空位元組擴展。

如果 size 小於檔案,則額外的資料將會遺失。

回傳值

成功時回傳 true,失敗時回傳 false

範例

範例 #1 SplFileObject::ftruncate() 範例

<?php
// 建立包含 "Hello World!" 的檔案
$file = new SplFileObject("/tmp/ftruncate", "w+");
$file->fwrite("Hello World!");

// 截斷至 5 個位元組
$file->ftruncate(5);

// 重設檔案指標並讀取資料
$file->rewind();
echo
$file->fgets();
?>

上述範例將輸出類似以下的內容

Hello

另請參閱

新增註解

使用者貢獻的註解 1 則註解

7
irvinezega at hotmail dot com
6 年前
我想我們很多人應該都知道這一點

然而,對於那些不知道的人來說:

如果您要將檔案截斷,例如使用 $fileObject->ftruncate(0),那麼建議您先呼叫 $fileObject->fseek(0)(在您呼叫 '$fileObject->ftruncate' 之前)。

在檢查時,我發現檔案的開頭有「NULL」字元。

因此,根據我的推測,當呼叫 'ftruncate()' 時,檔案指標並不會移動到檔案的開頭(或至少是所需的位置)。

這個問題花了我相當多的時間才弄清楚,所以我希望它能幫助到其他人。
To Top