PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
PHPSPL中提供了SplFileInfo和SplFileObject两个类来处理文件操作。
SplFileInfo用来获取文件详细信息:
$file=newSplFileInfo('foo-bar.txt');
print_r(array(
'getATime'=>$file->getATime(),//最后访问时间
'getBasename'=>$file->getBasename(),//获取无路径的basename
'getCTime'=>$file->getCTime(),//获取inode修改时间
'getExtension'=>$file->getExtension(),//文件扩展名
'getFilename'=>$file->getFilename(),//获取文件名
'getGroup'=>$file->getGroup(),//获取文件组
'getInode'=>$file->getInode(),//获取文件inode
'getLinkTarget'=>$file->getLinkTarget(),//获取文件链接目标文件
'getMTime'=>$file->getMTime(),//获取最后修改时间
'getOwner'=>$file->getOwner(),//文件拥有者
'getPath'=>$file->getPath(),//不带文件名的文件路径
'getPathInfo'=>$file->getPathInfo(),//上级路径的SplFileInfo对象
'getPathname'=>$file->getPathname(),//全路径
'getPerms'=>$file->getPerms(),//文件权限
'getRealPath'=>$file->getRealPath(),//文件绝对路径
'getSize'=>$file->getSize(),//文件大小,单位字节
'getType'=>$file->getType(),//文件类型file dir link
'isDir'=>$file->isDir(),//是否是目录
'isFile'=>$file->isFile(),//是否是文件
'isLink'=>$file->isLink(),//是否是快捷链接
'isExecutable'=>$file->isExecutable(),//是否可执行
'isReadable'=>$file->isReadable(),//是否可读
'isWritable'=>$file->isWritable(),//是否可写
));
SplFileObject继承SplFileInfo并实现RecursiveIterator,SeekableIterator接口,用于对文件遍历、查找、操作
遍历:
try{
foreach(newSplFileObject('foo-bar.txt')as$line){
echo$line;
}
}catch(Exception$e){
echo$e->getMessage();
}
查找指定行:
try{
$file=newSplFileObject('foo-bar.txt');
$file->seek(2);
echo$file->current();
}catch(Exception$e){
echo$e->getMessage();
}
写入csv文件:
$list =array(
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '7891'),
array('"aaa"', '"bbb"')
);
$file =new SplFileObject('file.csv', 'w');
foreach($list as $fields){
$file->fputcsv($fields);
}