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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
Feb 15 PHP
php cookis创建实现代码
Mar 16 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
php配置php-fpm启动参数及配置详解
Nov 04 PHP
PHP中的Memcache详解
Apr 05 PHP
从wamp到xampp的升级之路
Apr 08 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 29 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
node.js中的http.response.getHeader方法使用说明
2014/12/14 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
Python排序算法实例代码
2017/08/10 Python
Python类及获取对象属性方法解析
2020/06/15 Python
python利用faker库批量生成测试数据
2020/10/15 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
Html5 localStorage入门教程
2018/04/26 HTML / CSS
Java里面有没有全局变量?为什么?
2015/02/06 面试题
综合素质的自我鉴定
2013/10/07 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
2014年预算员工作总结
2014/12/05 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang
带你学习MySQL执行计划
2021/05/31 MySQL
使用python绘制分组对比柱状图
2022/04/21 Python
使用Django框架创建项目
2022/06/10 Python