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 相关文章推荐
实用函数2
Nov 08 PHP
PHP CKEditor 上传图片实现代码
Nov 06 PHP
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
php跨服务器访问方法小结
May 12 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
Aug 28 PHP
PHP编写登录验证码功能 附调用方法
May 19 PHP
session 加入redis的实现代码
Jul 15 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
PHP判断函数是否被定义的方法
Jun 21 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中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
Javascript Object.extend
2010/05/18 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
document.write的几点使用心得
2014/05/14 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
vue中的watch监听数据变化及watch中各属性的详解
2018/09/11 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
python pandas 时间日期的处理实现
2019/07/30 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
QML实现钟表效果
2020/06/02 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
幼儿园新学期寄语
2014/01/18 职场文书
个人现实表现材料
2014/02/04 职场文书
北体毕业生求职信
2014/02/28 职场文书
优秀教师演讲稿
2014/05/06 职场文书
环保公益策划方案
2014/08/15 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
法定代表人证明书
2014/11/28 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers
Python中的 enumerate和zip详情
2022/05/30 Python