PHP FileSystem 文件系统常用api整理总结

 更新时间:2019年07月12日 08:55:43   作者:水机.Threeki   我要评论

这篇文章主要介绍了PHP FileSystem 文件系统常用api,结合实例形式整理总结了php文件系统常用函数的功能、使用技巧与相关操作注意事项,需要的朋友可以参考下

本文实例讲述了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 文件内容相关操作

文件内容操作流程

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目录操作技巧汇总》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP网络编程技巧总结

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP 开发者该知道的 5 个 Composer 小技巧

    PHP 开发者该知道的 5 个 Composer 小技巧

    这篇文章主要介绍了PHP 开发者该知道的 5 个 Composer 小技巧,需要的朋友可以参考下
    2016-02-02
  • PHPTree——php快速生成无限级分类

    PHPTree——php快速生成无限级分类

    在开发中经常需要用到树形数据,比如无限多级分类,就是典型的树形结构。这里面的算法,用到了递归思想,为了简化开发过程,我编写了一个工具来提升开发效率,需要的朋友可以参考下
    2018-03-03
  • php正则表达式获取内容所有链接

    php正则表达式获取内容所有链接

    这篇文章主要介绍了php正则表达式获取内容所有链接的相关资料,需要的朋友可以参考下
    2015-07-07
  • php利用scws实现mysql全文搜索功能的方法

    php利用scws实现mysql全文搜索功能的方法

    这篇文章主要介绍了php利用scws实现mysql全文搜索功能的方法,可通过scws分词插件的扩展来实现MySQL全文搜索功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • PHP如何抛出异常处理错误

    PHP如何抛出异常处理错误

    PHP 5 提供了一种新的面向对象的错误处理方法。异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。
    2011-03-03
  • 为何说PHP引用是个坑,要慎用

    为何说PHP引用是个坑,要慎用

    在PHP 中引用的意思是用不同的名字访问同一个变量内容。与在C语言中的指针不同:例如不能对引用做指针运算,引用并不是实际的内存地址。下面这篇文章主要给大家介绍了关于为何说PHP引用是个坑,要慎用的相关资料,需要的朋友可以参考下。
    2018-04-04
  • 老生常谈PHP面向对象之解释器模式

    老生常谈PHP面向对象之解释器模式

    下面小编就为大家带来一篇老生常谈PHP面向对象之解释器模式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • php文件包含目录配置open_basedir的使用与性能详解

    php文件包含目录配置open_basedir的使用与性能详解

    下面小编就为大家带来一篇php文件包含目录配置open_basedir的使用与性能详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • PHP转盘抽奖接口实例

    PHP转盘抽奖接口实例

    这篇文章主要介绍了PHP转盘抽奖接口的实现方法,实例分析了随机抽奖接口的实现原理与对应数据库操作的技巧,需要的朋友可以参考下
    2015-02-02
  • mac下多个php版本快速切换的方法

    mac下多个php版本快速切换的方法

    这篇文章主要给大家介绍了在mac下多个php版本快速切换的方法,本文先是给大家分享了使用brew安装php多版本的方法,而后才介绍了快速切换的实现方法,感兴趣的朋友们下面来一起看看吧。
    2016-10-10

最新评论