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 相关文章推荐
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
php实现的Cookies操作类实例
Sep 24 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
Sep 27 PHP
thinkphp模板输出技巧汇总
Nov 24 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
分享php邮件管理器源码
Jan 06 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 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 Socket配置以及实例的详细介绍
2013/06/13 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
文本加密解密
2006/06/23 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
JavaScript对JSON数组简单排序操作示例
2019/01/31 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
redux.js详解及基本使用
2019/05/24 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
使用vant的地域控件追加全部选项
2020/11/03 Javascript
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
python包的导入方式总结
2021/03/02 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
师范应届毕业生自荐信
2013/11/18 职场文书
优秀员工个人的自我评价
2013/11/29 职场文书
电信营业员自我评价分享
2014/01/17 职场文书
大学开学计划书
2014/04/30 职场文书
精神文明单位申报材料
2014/05/02 职场文书
论文诚信承诺书
2014/05/23 职场文书
作风转变心得体会
2014/09/02 职场文书
九华山导游词
2015/02/03 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
JavaScript实现优先级队列
2021/12/06 Javascript
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android