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(3)
Oct 09 PHP
php 异常处理实现代码
Mar 10 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
Jun 03 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
php生成唯一的订单函数分享
Feb 02 PHP
PHP中把对象转换为关联数组代码分享
Apr 09 PHP
CodeIgniter配置之SESSION用法实例分析
Jan 19 PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 PHP
php变量与字符串的增删改查操作示例
May 07 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
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
js随机生成网页背景颜色的方法
2015/02/26 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
Python中Continue语句的用法的举例详解
2015/05/14 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
使用python画社交网络图实例代码
2019/07/10 Python
Python如何将装饰器定义为类
2020/07/30 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
《池塘边的叫声》教学反思
2014/04/12 职场文书
室内设计专业自荐信
2014/05/31 职场文书
教学质量月活动总结
2015/05/11 职场文书
起诉状范本
2015/05/20 职场文书
商务宴会祝酒词
2015/08/11 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python