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 FPDF类库应用实现代码
Mar 20 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
php学习笔记之面向对象
Nov 08 PHP
php合并数组中相同元素的方法
Nov 13 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
PHP获取数组最大值下标的方法
May 12 PHP
PHP实现GIF图片验证码
Nov 04 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
PHP实现多关键字加亮功能
Oct 21 PHP
Smarty3配置及入门语法
Feb 22 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
Jun 20 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 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
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
原生js实现分页效果
2020/09/23 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
python字符串替换的2种方法
2014/11/30 Python
Python线程的两种编程方式
2015/04/14 Python
Python科学计算之NumPy入门教程
2017/01/15 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
顺丰快递Java软件工程师面试题
2015/07/31 面试题
搞笑车尾标语
2014/06/23 职场文书
销售顾问工作计划书
2014/08/15 职场文书
学生保证书
2015/01/16 职场文书
语文复习计划
2015/01/19 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
微信早安问候语
2015/11/10 职场文书