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作的文本留言本的例子(五)
Oct 09 PHP
php 从数据库提取二进制图片的处理代码
Sep 09 PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 PHP
php中检查文件或目录是否存在的代码小结
Oct 22 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
php用户注册时常用的检验函数实例总结
Dec 22 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
PHP的PDO操作简单示例
Mar 30 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
Sep 04 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中过滤非法字符的具体实现
2013/10/29 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
php生成验证码函数
2015/10/20 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
关于递归运算的顺序测试代码
2011/11/30 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
Python编码爬坑指南(必看)
2016/06/10 Python
Python爬豆瓣电影实例
2018/02/23 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
Python使用folium excel绘制point
2019/01/03 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
力学专业毕业生自荐信
2013/11/17 职场文书
实习评语
2013/12/16 职场文书
司机职责范本
2014/03/08 职场文书
大一新生检讨书
2014/10/29 职场文书
云冈石窟导游词
2015/02/04 职场文书
医德医风自我评价2015
2015/03/03 职场文书
离职告别感言
2015/08/04 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
vue 实现上传组件
2021/05/31 Vue.js