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 相关文章推荐
?生?D片??C字串
Dec 06 PHP
简单的PHP留言本实例代码
May 09 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
php日历制作代码分享
Jan 20 PHP
ThinkPHP采用原生query实现关联查询left join实例
Dec 02 PHP
简单谈谈PHP vs Node.js
Jul 17 PHP
phalcon框架使用指南
Feb 23 PHP
JSON字符串传到后台PHP处理问题的解决方法
Jun 05 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 PHP
PHP实现验证码校验功能
Nov 16 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把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
js实现验证码干扰(静态)
2021/02/22 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
[00:11]战神迅矛
2019/03/06 DOTA
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python实现读取json文件到excel表
2017/11/18 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
C#实现启动一个进程
2016/10/01 面试题
计算机开发个人求职信范文
2013/09/26 职场文书
法律专业推荐信范文
2013/11/29 职场文书
大学新生军训方案
2014/05/03 职场文书
篮球比赛策划方案
2014/06/05 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python
MySQL 四种连接和多表查询详解
2021/07/16 MySQL
python运行脚本文件的三种方法实例
2022/06/25 Python