SplStream
用途
资源流数据操作
操作方法
| 方法名称 | 参数 | 说明 |
|---|---|---|
| __construct | $resource = ‘’,$mode = ‘r+’ | 初始化资源和读写操作 |
| __toString | 输出资源 | |
| close | 关闭一个打开的文件指针 | |
| detach | 获取资源并重置资源对象 | |
| getSize | 获取资源大小 | 编码转换 |
| tell | 返回文件指针读/写的位置 | |
| eof | 文件指针是否到了文件结束的位置 | |
| isSeekable | 获取是否可以在当前流中定位 | |
| seek | $offset, $whence = SEEK_SET | 在文件指针中定位 |
| rewind | 倒回文件指针的位置 | |
| isWritable | 是否可写 | |
| write | $string | 写入内容 |
| isReadable | 是否可读 | |
| read | $length | 读取内容 |
| length | 获取字符串长度 | |
| getContents | 读取资源流到一个字符串 | |
| getMetadata | $key = null | 从封装协议文件指针中取得报头/元数据 |
| getStreamResource | 获取资源 | |
| truncate | $size = 0 | 将文件截断到给定的长度 |
例子
__construct
初始化资源和读写操作
- mixed $resource 资源
- mixed $mode 读写操作类型
function __construct($resource = '',$mode = 'r+')
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$resource = fopen('./test.txt', 'ab+');$stream = new \EasySwoole\Spl\SplStream($resource);var_dump($stream->__toString());/*** 输出结果过:* string(10) "Easyswoole"*/
__toString
输出资源
public function __toString()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');var_dump($stream->__toString());/*** 输出结果过:* string(10) "Easyswoole"*/
close
关闭一个打开的文件指针
public function close()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$stream->close();var_dump($stream->__toString());/*** 输出结果过:* string(0) ""*/
detach
获取资源并重置资源对象
public function detach()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$stream->detach();var_dump($stream->__toString());/*** 输出结果过:* string(0) ""*/
getSize
获取资源大小
public function getSize()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$size = $stream->getSize();var_dump($size);/*** 输出结果过:* int(10)*/
tell
返回文件指针读/写的位置
public function tell()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$position = $stream->tell();var_dump($position);/*** 输出结果过:* int(10)*/
eof
文件指针是否到了文件结束的位置
public function eof()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$eof = $stream->eof();var_dump($eof);$stream->detach();$eof = $stream->eof();var_dump($eof);/*** 输出结果过:* bool(false)* bool(true)*/
isSeekable
获取是否可以在当前流中定位
public function isSeekable()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$seekable = $stream->isSeekable();var_dump($seekable);/*** 输出结果过:* bool(true)*/
seek
在文件指针中定位
- mixed $offset 偏移量
mixed $whence 指定类型
public function seek($offset, $whence = SEEK_SET)
指定类型:
SEEK_SET 设定位置等于 offset 字节
- SEEK_CUR 设定位置为当前位置加上 offset
- SEEK_END 设定位置为文件尾加上 offset
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$stream->seek(2);$position = $stream->tell();var_dump($position);/*** 输出结果过:* int(2)*/
rewind
倒回文件指针的位置
public function rewind()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$stream->rewind();$position = $stream->tell();var_dump($position);/*** 输出结果过:* int(0)*/
isWritable
是否可写
public function isWritable()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$writeAble = $stream->isWritable();var_dump($writeAble);/*** 输出结果过:* bool(true)*/
write
写入内容
- mixed $string 内容
public function write($string)
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$stream->write(', 666');var_dump($stream->__toString());/*** 输出结果过:* string(15) "Easyswoole, 666"*/
isReadable
是否可读
public function isReadable()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$readAble = $stream->isReadable();var_dump($readAble);/*** 输出结果过:* bool(true)*/
read
读取内容
- mixed $length 长度
public function read($length)
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$stream->rewind();$string = $stream->read(4);var_dump($string);/*** 输出结果过:* string(4) "Easy"*/
getContents
读取资源流到一个字符串
public function getContents()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$stream->rewind();$string = $stream->getContents();var_dump($string);/*** 输出结果过:* string(10) "Easyswoole"*/
getMetadata
从封装协议文件指针中取得报头/元数据
public function getMetadata($key = null)
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$meta = $stream->getMetadata();var_dump($meta['stream_type']);/*** 输出结果过:* string(6) "MEMORY"*/
getStreamResource
获取资源
function getStreamResource()
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$resource = $stream->getStreamResource();fseek($resource, 0, SEEK_SET);var_dump(stream_get_contents($resource));/*** 输出结果过:* string(10) "Easyswoole"*/
truncate
将文件截断到给定的长度
- mixed $size 截取文件大小
function truncate($size = 0)
::: warning 例子 :::
<?php/*** Created by PhpStorm.* User: root* Date: 19-7-2* Time: 上午10:25*/require_once 'vendor/autoload.php';$stream = new \EasySwoole\Spl\SplStream('Easyswoole');$stream->truncate(4);var_dump($stream->__toString());/*** 输出结果过:* string(4) "Easy"*/
::: warning ps: 资源和资源流是有区别的,这里说的资源也就是数据或是变量,资源流是一种文件流。 :::
