SplStream
資源流數(shù)據(jù)操作
相關class位置
- SplStream
-
namespace
:EasySwoole\Spl\SplStream
-
SplStream相關方法
方法名稱 | 參數(shù) | 說明 |
---|---|---|
__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 | 從封裝協(xié)議文件指針中取得報頭/元數(shù)據(jù) |
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"
*/
//從封裝協(xié)議文件指針中取得報頭/元數(shù)據(jù)
$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: 資源和資源流是有區(qū)別的,這里說的資源也就是數(shù)據(jù)或是變量,資源流是一種文件流。