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 条注释

irvinezega at hotmail dot com
6 年前
我想我们很多人都知道这一点

但是,对于那些不知道的人:

如果您要截断文件,例如,`$fileObject->ftruncate(0)`,那么最好先调用 `$fileObject->fseek(0)`(在调用 `'$fileObject->ftruncate'` 之前)。

经过检查,我在文件开头遇到“NULL”字符。

因此,据我推测;当调用 `ftruncate()` 时,文件指针不会移动到文件开头(或至少是所需位置)。

这个问题花了我很多时间才解决,所以我希望它能帮助到其他人。
To Top