我想我们很多人都知道这一点
但是,对于那些不知道的人:
如果您要截断文件,例如,`$fileObject->ftruncate(0)`,那么最好先调用 `$fileObject->fseek(0)`(在调用 `'$fileObject->ftruncate'` 之前)。
经过检查,我在文件开头遇到“NULL”字符。
因此,据我推测;当调用 `ftruncate()` 时,文件指针不会移动到文件开头(或至少是所需位置)。
这个问题花了我很多时间才解决,所以我希望它能帮助到其他人。
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::ftruncate — 将文件截断到给定长度
size
要截断到的尺寸。
注意:
如果
size
大于文件,则用空字节扩展它。如果
size
小于文件,则额外的数据将丢失。
示例 #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
我想我们很多人都知道这一点
但是,对于那些不知道的人:
如果您要截断文件,例如,`$fileObject->ftruncate(0)`,那么最好先调用 `$fileObject->fseek(0)`(在调用 `'$fileObject->ftruncate'` 之前)。
经过检查,我在文件开头遇到“NULL”字符。
因此,据我推测;当调用 `ftruncate()` 时,文件指针不会移动到文件开头(或至少是所需位置)。
这个问题花了我很多时间才解决,所以我希望它能帮助到其他人。