美文网首页php学习
php进阶(三)之文件处理

php进阶(三)之文件处理

作者: 半数的年 | 来源:发表于2018-07-16 10:30 被阅读0次

文件处理

一、读文件

(1)、最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中。

$content = file_get_contents('./test.txt');
file_get_contents也可以通过参数控制读取内容的开始点以及长度。
$content = file_get_contents('./test.txt', null, null, 100, 500);

(2)、PHP也提供类似于C语言操作文件的方法,使用fopen,fgets,fread等方法,fgets可以从文件指针中读取一行,freads可以读取指定长度的字符串。

$fp = fopen('./text.txt', 'rb');
while(!feof($fp)) {
    echo fgets($fp); //读取一行
}
fclose($fp);
$fp = fopen('./text.txt', 'rb');
$contents = '';
while(!feof($fp)) {
    $contents .= fread($fp, 4096); //一次读取4096个字符
}
fclose($fp);

(3)、一般情况下在对文件进行操作的时候需要先判断文件是否存在,PHP中常用来判断文件存在的函数有两个is_file与file_exists.

$filename = './test.txt';
if (file_exists($filename)) {
    echo file_get_contents($filename);
}

(4)、如果只是判断文件存在,使用file_exists就行,file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在,从函数名可以看出,is_file是确切的判断给定的路径是否是一个文件。

$filename = './test.txt';
if (is_file($filename)) {
    echo file_get_contents($filename);
}

(5)、更加精确的可以使用is_readable与is_writeable在文件是否存在的基础上,判断文件是否可读与可写。

$filename = './test.txt';
if (is_writeable($filename)) {
    file_put_contents($filename, 'test');
}
if (is_readable($filename)) {
    echo file_get_contents($filename);
}

(6)、取得文件的修改时间
文件有很多元属性,包括:文件的所有者、创建时间、修改时间、最后的访问时间等。

fileowner:获得文件的所有者
filectime:获取文件的创建时间
filemtime:获取文件的修改时间
fileatime:获取文件的访问时间
其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件或者缓存数据的更新。

$mtime = filemtime($filename);
echo '修改时间:'.date('Y-m-d H:i:s', filemtime($filename));

(7)、获取文件大小
通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。
如果要转换文件大小的单位,可以自己定义函数来实现。

function getsize($size, $format = 'kb') {
    $p = 0;
    if ($format == 'kb') {
        $p = 1;
    } elseif ($format == 'mb') {
        $p = 2;
    } elseif ($format == 'gb') {
        $p = 3;
    }
    $size /= pow(1024, $p);
    return number_format($size, 3);
}

$filename = '/data/webroot/usercode/code/resource/test.txt';
$size = filesize($filename);

$size = getsize($size, 'kb'); //进行单位转换
echo $size.'kb';
二、写文件

(1)、最简单的方式是采用file_put_contents。

$filename = './test.txt';
$data = 'test';
file_put_contents($filename, $data);

上例中,data参数可以是一个一维数组,当data是数组的时候,会自动的将数组连接起来,相当于data=implode('',data);
(2)、同样的,PHP也支持类似C语言风格的操作方式,采用fwrite进行文件写入。

$fp = fopen('./test.txt', 'w');
fwrite($fp, 'hello');
fwrite($fp, 'world');
fclose($fp);
三、删文件

跟Unix系统命令类似,PHP使用unlink函数进行文件删除。

unlink($filename);

删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。

rmdir($dir);

如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。

foreach (glob("*") as $filename) {
   unlink($filename);
}

相关文章

  • php进阶(三)之文件处理

    文件处理 一、读文件 (1)、最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到...

  • 第一章 Senior进阶 数据处理之文件读写

    第一章 Senior进阶 数据处理之文件读写 一、沙盒机制 二、简单对象的写入与读取 三、文件管理器 四、复杂对象...

  • 12.4.2 文件上传的处理

    12.4.2 文件上传的处理 在服务器端通过PHP处理上传 上传文件的接收和处理是通过PHP脚本来处理的,具体需要...

  • php运行原理

    PHP总共有三个模块:内核、Zend引擎、以及扩展层; PHP内核用来处理请求、文件流、错误处理等相关操作; Ze...

  • PHP底层分析

    编译流程 PHP总共有三个模块:内核、Zend引擎、以及扩展层;PHP内核用来处理请求、文件流、错误处理等相关操作...

  • redis有序集合做消息队列

    新建一个rediszadd.php文件# 新建out.php文件做逻辑处理 执行结果:

  • PHP文件处理

    fopen()将filename指定的名字资源绑定到一个流上。 打开文件 resourcefopen(string...

  • PHP文件处理

    fopen 打开文件image.png fopen("test.txt","a+");备注:“r”,只读方式打开,...

  • ThinkPHP 5 结构与路径解析

    结构: 入口文件: 所有的请求都必须经过 index.php 的处理。(index.php 在 public 文件...

  • 文件处理和上传

    PHP 文件处理和上传 如何判断文件和文件夹 文件的属性 文件的操作 这段我整体是查阅PHP的手册完成--大家参考...

网友评论

    本文标题:php进阶(三)之文件处理

    本文链接:https://www.haomeiwen.com/subject/riyvpftx.html