gzseek

(PHP 4, PHP 5, PHP 7, PHP 8)

gzseek在 gz 文件指针上查找

描述

gzseek(资源 $stream, 整数 $offset, 整数 $whence = SEEK_SET): 整数

将给定文件指针的文件位置指示器设置到文件流中的给定偏移字节处。等效于调用 (在 C 中) gzseek(zp, offset, SEEK_SET)

如果文件是打开以供读取,则此函数是模拟的,但可能非常慢。如果文件是打开以供写入,则仅支持向前查找;gzseek() 然后压缩一系列零到新的起始位置。

参数

stream

gz 文件指针。它必须有效,并且必须指向由 gzopen() 成功打开的文件。

offset

查找的偏移量。

whence

whence 值为

  • SEEK_SET - 将位置设置为等于 offset 字节。
  • SEEK_CUR - 将位置设置为当前位置加上 offset

如果未指定 whence,则假定为 SEEK_SET

返回值

成功时,返回 0;否则,返回 -1。请注意,查找超过 EOF 不被视为错误。

示例

示例 #1 gzseek() 示例

<?php
$gz
= gzopen('somefile.gz', 'r');
gzseek($gz,2);
echo
gzgetc($gz);
gzclose($gz);
?>

参见

  • gztell() - 告知 gz 文件指针读/写位置
  • gzrewind() - 倒回 gz 文件指针的位置

添加备注

用户贡献备注 2 个备注

0
liuhaifeng at example dot com
11 年前
由于在结束之后查找不被视为错误,因此我怀疑 "while (gzseek ($fh, $eof) == 0) $eof += $d;" 会进入无限循环。
0
dperham at wgate dot com
19 年前
PHP/4.3.9
与备注相反,如果我尝试查找文件结束之后,gzseek() 会返回 -1。下面是一个函数,它将返回最后一个可查找位置,并将文件指针置于该位置。

/** 将文件指针设置到文件的末尾
* 并返回文件中的字节数。
*/
function gzend($fh)
{
$d = 1<<14;
$eof = $d;
while ( gzseek($fh, $eof) == 0 ) $eof += $d;
while ( $d > 1 )
{
$d >>= 1;
$eof += $d * (gzseek($fh, $eof)? -1 : 1);
}
return $eof;
}
To Top