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下使用strpos需要注意 === 运算符
Jul 17 PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
如何在php中正确的使用json
Aug 06 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
PHP生成唯一订单号的方法汇总
Apr 16 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 PHP
php str_getcsv把字符串解析为数组的实现方法
Apr 05 PHP
禁止直接访问php文件代码分享
May 05 PHP
PHP正则表达式之RCEService回溯
Apr 11 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
杏林同学录(七)
2006/10/09 PHP
PHP-MySQL教程归纳总结
2008/06/07 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
Javascript学习笔记5 类和对象
2010/01/11 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
深入浅析javascript函数中with
2018/10/28 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
python中正则表达式的使用详解
2014/10/17 Python
将Python代码打包为jar软件的简单方法
2015/08/04 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
python求解汉诺塔游戏
2020/07/09 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
介绍一下EJB的体系结构
2012/08/01 面试题
小学生检讨书大全
2014/02/06 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
行政监察建议书
2014/05/19 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
工作收入证明范本
2015/06/12 职场文书
女性健康讲座主持词
2015/07/04 职场文书
Python中常见的导入方式总结
2021/05/06 Python
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL