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 相关文章推荐
一个用于mysql的数据库抽象层函数库
Oct 09 PHP
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
Nov 18 PHP
PHP的面试题集
Nov 19 PHP
PHP 程序员也要学会使用“异常”
Jun 16 PHP
PHP中simplexml_load_string函数使用说明
Jan 01 PHP
php批量缩放图片的代码[ini参数控制]
Feb 11 PHP
php中使用__autoload()自动加载未定义类的实现代码
Feb 06 PHP
destoon实现调用自增数字从1开始的方法
Aug 21 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
Oct 27 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 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程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
Python执行时间的计算方法小结
2017/03/17 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Python实现FTP文件传输的实例
2019/07/07 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
个人自荐书
2013/12/20 职场文书
房产买卖委托公证书
2014/04/04 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
技术经济专业求职信
2014/09/03 职场文书
2014年标准化工作总结
2014/12/17 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL