SplStream
资源流数据操作
相关class位置
- SplStream
-
namespace
:EasySwoole\Spl\SplStream
-
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 | 将文件截断到给定的长度 |
基本使用
<?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"
*/
//输出资源
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
var_dump($stream->__toString());
/**
* 输出结果过:
* string(10) "Easyswoole"
*/
//关闭一个打开的文件指针
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->close();
var_dump($stream->__toString());
/**
* 输出结果过:
* string(0) ""
*/
//获取资源并重置资源对象
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->detach();
var_dump($stream->__toString());
/**
* 输出结果过:
* string(0) ""
*/
//获取资源大小
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$size = $stream->getSize();
var_dump($size);
/**
* 输出结果过:
* int(10)
*/
//返回文件指针读/写的位置
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$position = $stream->tell();
var_dump($position);
/**
* 输出结果过:
* int(10)
*/
//文件指针是否到了文件结束的位置
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$eof = $stream->eof();
var_dump($eof);
$stream->detach();
$eof = $stream->eof();
var_dump($eof);
/**
* 输出结果过:
* bool(false)
* bool(true)
*/
//获取是否可以在当前流中定位
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$seekable = $stream->isSeekable();
var_dump($seekable);
/**
* 输出结果过:
* bool(true)
*/
//在文件指针中定位
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->seek(2);
$position = $stream->tell();
var_dump($position);
/**
* 输出结果过:
* int(2)
*/
//倒回文件指针的位置
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->rewind();
$position = $stream->tell();
var_dump($position);
/**
* 输出结果过:
* int(0)
*/
//是否可写
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$writeAble = $stream->isWritable();
var_dump($writeAble);
/**
* 输出结果过:
* bool(true)
*/
//写入内容
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->write(', 666');
var_dump($stream->__toString());
/**
* 输出结果过:
* string(15) "Easyswoole, 666"
*/
//是否可读
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$readAble = $stream->isReadable();
var_dump($readAble);
/**
* 输出结果过:
* bool(true)
*/
//读取内容
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->rewind();
$string = $stream->read(4);
var_dump($string);
/**
* 输出结果过:
* string(4) "Easy"
*/
//读取资源流到一个字符串
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->rewind();
$string = $stream->getContents();
var_dump($string);
/**
* 输出结果过:
* string(10) "Easyswoole"
*/
//从封装协议文件指针中取得报头/元数据
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$meta = $stream->getMetadata();
var_dump($meta['stream_type']);
/**
* 输出结果过:
* string(6) "MEMORY"
*/
//获取资源
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$resource = $stream->getStreamResource();
fseek($resource, 0, SEEK_SET);
var_dump(stream_get_contents($resource));
/**
* 输出结果过:
* string(10) "Easyswoole"
*/
//将文件截断到给定的长度
$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->truncate(4);
var_dump($stream->__toString());
/**
* 输出结果过:
* string(4) "Easy"
*/
ps: 资源和资源流是有区别的,这里说的资源也就是数据或是变量,资源流是一种文件流。