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 什么是PEAR?
Mar 19 PHP
php 分页类 扩展代码
Jun 11 PHP
PHP 翻页 实例代码
Aug 07 PHP
php文件上传简单实现方法
Jan 24 PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 PHP
thinkPHP基于ajax实现的菜单与分页示例
Jul 12 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
Smarty日期时间操作方法示例
Nov 15 PHP
利用ajax和PHP实现简单的流程管理
Mar 23 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
Mar 31 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 PHP
Laravel定时任务的每秒执行代码
Oct 22 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
php自动注册登录验证机制实现代码
2011/12/20 PHP
php简单分页类实现方法
2015/02/26 PHP
php实现源代码加密的方法
2015/07/11 PHP
来自qq的javascript面试题
2010/07/24 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
python调用百度REST API实现语音识别
2018/08/30 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
Python----数据预处理代码实例
2019/03/20 Python
python五子棋游戏的设计与实现
2019/06/18 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
在Python中实现字典反转案例
2020/12/05 Python
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
实习教师自我鉴定
2013/12/12 职场文书
党员干部公开承诺书
2014/03/26 职场文书
交通事故协议书
2014/04/15 职场文书
法定代表人证明书
2014/11/28 职场文书
教师师德工作总结2015
2015/07/22 职场文书
《秋思》教学反思
2016/02/23 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
Mysql 如何查询时间段交集
2021/06/08 MySQL
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL