2009年1月8日星期四

SPL File Object

class SplFileObject extends SplFileInfo implements RecursiveIterator, SeekableIterator
SPL 文件对象继承自 SplFileInfo, 实现了 RecursiveIterator, SeekableIterator 接口。

一般我们访问文件方式:

$filename = '/path/ to/file';
$fp = fopen($filename, 'r');
if ($fp) {
while (!feof($fp)) {
$text = fgets($fp);
echo $text;
}
fclose($fp);
}


利用 SplFileObject 我们可以这么写:

$filename = '/path/ to/file';
$file = new SplFileObject($filename);
$file->openFile();
foreach ($file as $line) {
echo $line;
}

因为 SplFileObject 实现了RecursiveIterator 迭代器接口, foreach 可以很方便的访问到它。

写文件:

$filename = '/path/to/file';
$file = new SplFileObject($filename);
$file->openFile('w');
$file->fwrite('some text');


继承自 SplFileInfo 的一些方法:

echo '修改时间:', $file->getMTime(), "\n";
echo '所在路径:', $file->getPath(), "\n";
echo '文件名:', $file->getFilename(), "\n";
echo '全路径(路径+文件名):', $file->getPathname(), "\n";



更多方法请参考 Spl 文档

没有评论: