5-1 PHP 文件系统之读取文件内容

file_get_contents(), 将整个文件读取作为一个字符串。

  1. $content = file_get_contents('./test.txt');

file_get_contents 也可以通过参数设置,控制读取内容的开始点和长度。

  1. $content = file_get_contents('./test.txt', null, null, 100, 500);

PHP 也提供了类似于 C 语言操作文件的方法 。 fopen , fgets, fread —- fgets 可以读取文件指针指向的一行, fread 可以读取制定长度的字符串。

  1. $fp = fopen('./test.txt', 'rb');
  2. while(!feof($fp)){ // feof 测试文件指针是否到了文件结束的位置
  3. echo fgets($fp);
  4. }
  5. fclose($fp);
  1. $fp = fopen('./test.txt', 'rb');
  2. $contents = '';
  3. while(!feof($fp)){
  4. $contents .= fread($fp, 4096); // 一次读取 4096 个字节。
  5. }
  6. fclose($fp); // 使用 fopen 打开的文件,最好使用 fclose 关闭文件指针,以避免文件句柄被占用

5-2 PHP 文件系统之判断文件是否存在

一般来说,对文件进行操作之前需要先判断文件是否存在,PHP 中常用来判断文件存在的函数有两个 is_file() 和 file_exists();

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

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

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

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

  1. $filename = "./test.txt";
  2. if(is_writeable('$filename')){
  3. file_put_contents($filename, 'test');
  4. }
  5. if(is_readable($filename)){
  6. echo file_get_contents($filename);
  7. }

5-3 PHP 文件系统之取得文件的修改时间

文件有很多元属性,包括文件的所有者,创建时间,修改时间,最后访问时间

fileowner : 获得文件的所有者 filectime : 文件创建时间 filemtime : 文件编辑时间 fileatime : 文件访问时间

其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件和缓存数据的更新

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

5-4 PHP 文件系统之取得文件的大小

可以用 filesize() 函数取得文件的大小,文件的大小是以字节数来表示的。

  1. $filename = './test.txt';
  2. $size = filesize($filename);

如果要转换文件大小的单位,可以自己定义函数来实现:

  1. function getSize($size, $format='kb'){
  2. $p = 0;
  3. if($format == 'kb'){
  4. $p = 1;
  5. }elseif($format == 'mb'){
  6. $p = 2;
  7. }elseif($format == 'gb'){
  8. $p = 3;
  9. }
  10. $size /= pow(1024, $p);
  11. return number_format($size, 3);
  12. }
  13. $filename = './test.txt';
  14. $size = filesize($filename);
  15. $size = getSize($size, 'kb');
  16. echo $size . kb';

5-5 PHP 文件系统之写入内容到文件

php 写文件有两种方式, 1、 file_put_contents

  1. $filename = './test.txt';
  2. $content = 'test'; // $content 可以是一个数组,数组的情况下,会自动将数组连接起来
  3. if(is_writeable($filename)){
  4. file_put_contents($filename, $content);
  5. }

2、fwrite

  1. $fp = fopen('test.txt');
  2. fwrite($fp, 'hello');
  3. fwrite($fp, 'world');
  4. fclose($fp);

5-6 PHP 文件系统之删除文件

跟 Uninx 系统类似, PHP 使用 unlink() 函数删除文件

  1. unlink($filename);

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

  1. rmdir($dir);

如果文件夹中存在文件,可以使用 glob 函数遍历所有文件

  1. foreach(glob("*") as $filename){
  2. unlink($filename);
  3. }