SplFileObject::ftruncate
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::ftruncate — Truncates the file to a given length
说明
public SplFileObject::ftruncate(int
$size
): bool
Truncates the file to size
bytes.
参数
-
size
-
The size to truncate to.
注意:
If
size
is larger than the file it is extended with null bytes.If
size
is smaller than the file, the extra data will be lost.
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 SplFileObject::ftruncate() example
<?php
// Create file containing "Hello World!"
$file = new SplFileObject("/tmp/ftruncate", "w+");
$file->fwrite("Hello World!");
// Truncate to 5 bytes
$file->ftruncate(5);
// Rewind and read data
$file->rewind();
echo $file->fgets();
?>
以上例程的输出类似于:
Hello

User Contributed Notes 1 note
irvinezega at hotmail dot com ¶
3 years ago
I suppose a fair number of us know this:
However, for those who don't:-
If you are truncating a file, say, to $fileObject->ftruncate(0), then, it may be advisable to call $fileObject->fseek(0) first (before you call '$fileObject->ftruncate').
On inspection, I was encountering 'NULL' characters at the beginning of a, or the, file.
Hence, from what I have surmised; when 'ftruncate()' is called, the file pointer does NOT move to the beginning (or, at least, the required position) of the file.
This issue cost me a fair amount of time to figure out, so I hope it helps someone.
备份地址:http://www.lvesu.com/blog/php/splfileobject.ftruncate.php