这篇文章主要介绍了PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例,本文讲解SplFileInfo用来获取文件详细信息、SplFileObject遍历、查找指定行、写入csv文件等内容,需要的朋友可以参考下
PHP SPL中提供了SplFileInfo和SplFileObject两个类来处理文件操作。
SplFileInfo用来获取文件详细信息:
代码如下:
$file = new SplFileInfo("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(new SplFileObject("foo-bar.txt") as $line) {
echo $line;
}
} catch (Exception $e) {
echo $e->getMessage();
}
查找指定行:
代码如下:
try {
$file = new SplFileObject("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 );
}
推荐访问:操作 文件 标准 php SPL标准库之文件操作 spl标准php类库 spl标准库增删改查
扩展阅读文章
推荐阅读文章
致富创业网 www.csyzzm.com
Copyright © 2002-2018 . 致富创业网 版权所有 湘ICP备12008529号-1