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 读写操作类型
    1. function __construct($resource = '',$mode = 'r+')

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $resource = fopen('./test.txt', 'ab+');
  10. $stream = new \EasySwoole\Spl\SplStream($resource);
  11. var_dump($stream->__toString());
  12. /**
  13. * 输出结果过:
  14. * string(10) "Easyswoole"
  15. */

__toString

输出资源

  1. public function __toString()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. var_dump($stream->__toString());
  11. /**
  12. * 输出结果过:
  13. * string(10) "Easyswoole"
  14. */

close

关闭一个打开的文件指针

  1. public function close()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $stream->close();
  11. var_dump($stream->__toString());
  12. /**
  13. * 输出结果过:
  14. * string(0) ""
  15. */

detach

获取资源并重置资源对象

  1. public function detach()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $stream->detach();
  11. var_dump($stream->__toString());
  12. /**
  13. * 输出结果过:
  14. * string(0) ""
  15. */

getSize

获取资源大小

  1. public function getSize()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $size = $stream->getSize();
  11. var_dump($size);
  12. /**
  13. * 输出结果过:
  14. * int(10)
  15. */

tell

返回文件指针读/写的位置

  1. public function tell()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $position = $stream->tell();
  11. var_dump($position);
  12. /**
  13. * 输出结果过:
  14. * int(10)
  15. */

eof

文件指针是否到了文件结束的位置

  1. public function eof()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $eof = $stream->eof();
  11. var_dump($eof);
  12. $stream->detach();
  13. $eof = $stream->eof();
  14. var_dump($eof);
  15. /**
  16. * 输出结果过:
  17. * bool(false)
  18. * bool(true)
  19. */

isSeekable

获取是否可以在当前流中定位

  1. public function isSeekable()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $seekable = $stream->isSeekable();
  11. var_dump($seekable);
  12. /**
  13. * 输出结果过:
  14. * bool(true)
  15. */

seek

在文件指针中定位

  • mixed $offset 偏移量
  • mixed $whence 指定类型

    1. public function seek($offset, $whence = SEEK_SET)

    指定类型:

  • SEEK_SET 设定位置等于 offset 字节

  • SEEK_CUR 设定位置为当前位置加上 offset
  • SEEK_END 设定位置为文件尾加上 offset

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $stream->seek(2);
  11. $position = $stream->tell();
  12. var_dump($position);
  13. /**
  14. * 输出结果过:
  15. * int(2)
  16. */

rewind

倒回文件指针的位置

  1. public function rewind()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $stream->rewind();
  11. $position = $stream->tell();
  12. var_dump($position);
  13. /**
  14. * 输出结果过:
  15. * int(0)
  16. */

isWritable

是否可写

  1. public function isWritable()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $writeAble = $stream->isWritable();
  11. var_dump($writeAble);
  12. /**
  13. * 输出结果过:
  14. * bool(true)
  15. */

write

写入内容

  • mixed $string 内容
    1. public function write($string)

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $stream->write(', 666');
  11. var_dump($stream->__toString());
  12. /**
  13. * 输出结果过:
  14. * string(15) "Easyswoole, 666"
  15. */

isReadable

是否可读

  1. public function isReadable()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $readAble = $stream->isReadable();
  11. var_dump($readAble);
  12. /**
  13. * 输出结果过:
  14. * bool(true)
  15. */

read

读取内容

  • mixed $length 长度
    1. public function read($length)

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $stream->rewind();
  11. $string = $stream->read(4);
  12. var_dump($string);
  13. /**
  14. * 输出结果过:
  15. * string(4) "Easy"
  16. */

getContents

读取资源流到一个字符串

  1. public function getContents()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $stream->rewind();
  11. $string = $stream->getContents();
  12. var_dump($string);
  13. /**
  14. * 输出结果过:
  15. * string(10) "Easyswoole"
  16. */

getMetadata

从封装协议文件指针中取得报头/元数据

  1. public function getMetadata($key = null)

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $meta = $stream->getMetadata();
  11. var_dump($meta['stream_type']);
  12. /**
  13. * 输出结果过:
  14. * string(6) "MEMORY"
  15. */

getStreamResource

获取资源

  1. function getStreamResource()

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $resource = $stream->getStreamResource();
  11. fseek($resource, 0, SEEK_SET);
  12. var_dump(stream_get_contents($resource));
  13. /**
  14. * 输出结果过:
  15. * string(10) "Easyswoole"
  16. */

truncate

将文件截断到给定的长度

  • mixed $size 截取文件大小
    1. function truncate($size = 0)

::: warning 例子 :::

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: root
  5. * Date: 19-7-2
  6. * Time: 上午10:25
  7. */
  8. require_once 'vendor/autoload.php';
  9. $stream = new \EasySwoole\Spl\SplStream('Easyswoole');
  10. $stream->truncate(4);
  11. var_dump($stream->__toString());
  12. /**
  13. * 输出结果过:
  14. * string(4) "Easy"
  15. */

::: warning ps: 资源和资源流是有区别的,这里说的资源也就是数据或是变量,资源流是一种文件流。 :::