PHP FileSystem 文件系统常用api整理总结


Posted in PHP onJuly 12, 2019

本文实例讲述了PHP FileSystem 文件系统常用api。分享给大家供大家参考,具体如下:

参数说明:$filename (文件的路径)

1-4 文件信息相关

filetype() 判断文件类型,返回 file / dir
 filesize()
 filectime() 创建时间
 filectime() 取得 inode信息 [理解inode 阮一峰](http://www.ruanyifeng.com/blog/2011/12/inode.html)
  例子:date('Y年m月d日, h:i:s',filectime($file))
 filemtime() 修改时间
 fileatime() 上一次访问时间
 is_readable() 可读性
 is_writeable() / is_writable() 可写性
 is_executable() 可执行性
 pathinfo()
 dirname()
 basename()
 is_file()  检查是否为文件 且存在
 file_exists( $filename ) 检测文件或目录是否存在

1-6 文件基本操作:创建、删除、剪切、重命名、拷贝

touch( $filename ) 创建文件
 unlink( $filename ) 删除文件
 rename( $filename, $newname ) 重命名/剪切 文件/目录
 copy( $source, $dest ) 复制文件
   注意:拷贝远程文件需要开启php配置选项中的allow_url_fopen=On

1-8 文件内容相关操作

文件内容操作流程

PHP FileSystem 文件系统常用api整理总结

fopen($filename, $mode) 打开指定文件, 以指定方式打开
 //为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。
 $handle = fopen($filename, 'rb+') 读写方式打开
fread($handle, $length) 读取文件
 fread($handle, filesize($filename));  读取所有文件内容
fwrite($handle, $string) / fputs() 写入内容
fclose($handle) 关闭文件
ftell($handle) 返回指针位置
fseek($handle, $offset) 移动指针到指定位置
rewind($handle) 重置指针
// 例子
$filename = '2.txt';
$handle = fopen($filename, 'ab+'); // 以追加模式打开
fwrite($handle, PHP_EOL.'abc');
// 重置指针
rewind($handle); 此处,如果不重置指针,则最后的读取$res为空字符串
$res = fread($handle, filesize($filename));
fclose($handle);
var_dump($res);

1-11 文件读取相关操作

ftruncate($handle, $size)  将文件截断到给定长度
feof($handle)  测试文件指针是否到达末尾

fgetc()  读取一个字符
fgets()  读取一行字符
fgetss() 读取一行字符,并且过滤掉HTML标记
strip_tags(fgets($handle))  也可以过滤掉HTML标记

while(!feof($handle)){
  echo fgetc($handle); // 一个一个字符读取文件,直到最后
}

1-13 csv格式操作

fgetcsv()  从文件指针中读入一行并解析csv字段
fputcsv()  将行格式化为csv在写入文件

// 例子1:
// user.csv文件内容:
1,king,12,123@qq.com
2,queen,32,test@qq.com
3,lily,23,test1@qq.com

$filename = 'user.csv';
$handle = fopen($filename, 'rb+');
$rows=[];
while($row=fgetcsv($handle)){
 $rows[] = $row;
}
print_r($rows);

例子2:

$filename = 'user2.scv';
$handle = fopen($filename, 'wb+'); // 以读写的方式打开文件,如果不存在则创建文件
$data = [
 ['1','php','php是最好的语言'],
 ['2','javascript','javascript很火啊'],
 ['3','meteor','meteor anywhere'],
];
foreach($data as $val){
 fputcsv($handle, $val);
}
fclose($handle);

1-14 简化文件写入和读取操作

file_get_contents($fliename)  读取文件函数
file_put_contents($filename, $data)  将一个字符串写入文件, 注意:这里是先将文件清空,然后再写入$data

如果不想覆盖内容,可以先把文件内容先读取出来,接着再写入

$filename = '1.txt';
$string = file_get_contents($filename);
$data = $string.'this is a test';
file_put_contents($filename, $data);

如果写入的是数组

1. 一维数组,则将一维数组转化为 'abc' 直接写入

$filename = '3.txt';
$data = ['a','b','c'];
file_put_contents($filename, $data);

2. 如果是二维数组 或者 多维数组,则需将数组或对象序列化后写入文件

$filename = '3.txt';
$data = [
  ['a','b','c'],
  ['d','e','f']
];
$data = serialize($data); // 序列化
file_put_contents($filename, $data);
$res = file_get_contents($filename);
print_r(unserialize($res)); // 反序列化

第二种方式:转json格式写入

$filename = '1.txt';
$data = [
 ['a','b','c'],
 ['d','e','f']
];
$data = json_encode($data); // 转json编码格式
file_put_contents($filename, $data);
$res = json_decode(file_get_contents($filename)); // 对json字符串解码
print_r($res);

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
PHP 冒泡排序算法的实现代码
Aug 08 PHP
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
PHP面向接口编程 耦合设计模式 简单范例
Mar 23 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
Mar 16 PHP
PHP+Ajax异步带进度条上传文件实例
Nov 01 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
php curl发送请求实例方法
Aug 01 PHP
如何用PHP websocket实现网页实时聊天
May 26 PHP
PHP实现字母数字混合验证码功能
Jul 11 #PHP
Swoole 5将移除自动添加Event::wait()特性详解
Jul 10 #PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 #PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 #PHP
PHP+redis实现微博的推模型案例分析
Jul 10 #PHP
实例分析10个PHP常见安全问题
Jul 09 #PHP
PHP批斗大会之缺失的异常详解
Jul 09 #PHP
You might like
中英文字符串翻转函数
2008/12/09 PHP
php的ajax框架xajax入门与试用介绍
2010/12/19 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
mongodb和php的用法详解
2019/03/25 PHP
jQuery 工具函数学习资料
2010/04/29 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
python实现中文分词FMM算法实例
2015/07/10 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
职业生涯规划设计步骤
2014/01/12 职场文书
运动会广播稿30字
2014/01/21 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
裁员通知
2015/04/25 职场文书
新闻报道稿范文
2015/07/23 职场文书
教导处教学工作总结
2015/08/12 职场文书
导游词之山海关
2019/12/10 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers