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


Posted in PHP onMay 11, 2015

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 相关文章推荐
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
ajax返回值中有回车换行、空格的解决方法分享
Oct 24 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
php页面缓存方法小结
Jan 10 PHP
PHP图像识别技术原理与实现
Oct 27 PHP
解决laravel 5.1报错:No supported encrypter found的办法
Jun 07 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
php PDO属性设置与操作方法分析
Dec 27 PHP
PHP中“=>
Mar 01 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 24 PHP
关于PHP数组迭代器的使用方法实例
Nov 17 PHP
PHP设计模式之适配器模式代码实例
May 11 #PHP
Mac环境下php操作mysql数据库的方法分享
May 11 #PHP
PHP设计模式之装饰者模式代码实例
May 11 #PHP
PHP超牛逼无限极分类生成树方法
May 11 #PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
May 11 #PHP
PHP获取当前日期和时间及格式化方法参数
May 11 #PHP
PHP借助phpmailer发送邮件
May 11 #PHP
You might like
我的论坛源代码(七)
2006/10/09 PHP
PHP实现图片简单上传
2006/10/09 PHP
JavaScript 学习点滴记录
2009/04/24 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
jQuery实用技巧必备(下)
2015/11/03 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
python开发中module模块用法实例分析
2015/11/12 Python
Python表示矩阵的方法分析
2017/05/26 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
pycharm导入源码的具体步骤
2020/08/04 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
幼儿园园长岗位职责
2013/11/26 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
环保倡议书范文
2014/05/12 职场文书
婚庆答谢词大全
2015/09/29 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
python实现会员信息管理系统(List)
2022/03/18 Python