欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例

程序员文章站 2023-01-25 08:50:52
php spl中提供了splfileinfo和splfileobject两个类来处理文件操作。 splfileinfo用来获取文件详细信息: 复制代码 代码如下: $...

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 );
}