慕课网——PHP进阶篇(文件系统)
2017-11-18 17:30
399 查看
在本章节中,关于文件的处理主要是:读取、写入、修改、删除。进行这些操作之前,首要判断文件是否存在。在C语言中,关于文件的这部分,在大一学习时没有深入了解,在本章节学起来有点吃力,百度了很多东西。所幸还好,现在是可以理解了,缺乏实践动手能力。
C语言中,关于文件的相关操作,请参考网址:http://www.jb51.net/article/37688.htm。这里主要说PHP。
读取文件内容:读取文件函数为file_get_contents,可以将整个文件全部读取到一个字符中。$content = file_get_contents('./test.txt');
file_get_contents也可以通过参数控制读取内容的开始点以及长度。$content = file_get_contents('./test.txt',null,null,100,500);
PHP也提供类似C语言操作文件的方法,使用fopen、fgets、fread等方法,fgets可以从文件指针中读取一行,freads可以读取指定长度的字符串。
判断文件是否存在:在对文件进行操作之前要先判断是否存在,通常用两个函数is_file与file_exists。
写入内容到文件:采用file_put_contents。
上例中,$data参数可以是一个一维数组,当$data是数组的时候,会自动的将数组链接起来,相当于$data = implode(' ',$data);
也可以采用fwrite进行文件写入
$fp = fopen('./test.txt','w');
fwrite($fp,'hello');
fwrite($fp,'world');
fclose($fp); 删除文件:使用unlink函数进行文件删除。unlink($filename);
删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。rmdir($dir);
如果文件中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。
foreach(glod("*") as $filename){
unlink($filename);
}
C语言中,关于文件的相关操作,请参考网址:http://www.jb51.net/article/37688.htm。这里主要说PHP。
读取文件内容:读取文件函数为file_get_contents,可以将整个文件全部读取到一个字符中。$content = file_get_contents('./test.txt');
file_get_contents也可以通过参数控制读取内容的开始点以及长度。$content = file_get_contents('./test.txt',null,null,100,500);
PHP也提供类似C语言操作文件的方法,使用fopen、fgets、fread等方法,fgets可以从文件指针中读取一行,freads可以读取指定长度的字符串。
$fp = fpopen('./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);使用fopen打开的文件,最好使用fclose关闭文件指针,以避免文件句柄被占用。
判断文件是否存在:在对文件进行操作之前要先判断是否存在,通常用两个函数is_file与file_exists。
$filename = './test.txt'; if(file_exists($filename)){ echo file_get_contents($filename); }如果只是判断文件存在,使用file_exists就行,file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在,从函数名可以看出,is_file是确切的判断给定的路径是否是一个文件。
$filename = './test.txt'; if(is_file($filename)){ echo file_get_contents($filename); }更加精确的可以使用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); }取得文件的修改时间:文件有很多元属性,包括文件的所有者、创建时间、修改时间、最后的访问时间等。
fileowner:获得文件的所有者 filectime:获取文件的创建时间 filemtime:获取文件的修改时间 fileatime:获取文件的访问时间其中最常用的文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件或者缓存数据的更新。
$mtime = filemtime($filename); echo '修改时间:'.date('Y-m-d H:i:s',filemtime($filename));
//判断文件内容是否过期 <?php $filename = '/data/webroot/usercode/code/resource/test.txt'; echo '所有者:'.fileowner($filename).'<br>'; echo '创建时间:'.filectime($filename).'<br>'; echo '修改时间:'.filemtime($filename).'<br>'; echo '最后访问时间:'.fileatime($filename).'<br>'; $mtime = filemtime($filename); //通过计算时间差 来判断文件内容是否有效 if (time() - $mtime > 3600) { echo '<br>缓存已过期'; } else { echo file_get_contents($filename); }取得文件的大小:通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。
$filename = '/data/webroot/usercode/resource/test.txt'; $size = filesize($filename);如果要转换文件大小的单位,可以自己定义函数来实现。
function getsize($size,$format = 'kb'){\ $p = 0; if($format == 'kb'){ $p = 1; }else if($format == 'mb'){ $p = 2; }else if($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';值得注意的是,没法通过简单的函数来取得目录的大小,目录的大小是该目录下所有的子目录以及文件大小的总和,因此需要通过递归的方法来循环计算目录的大小。
写入内容到文件:采用file_put_contents。
$filename = './test.txt'; $data = 'test'; file_put_contents($filename,$data);
上例中,$data参数可以是一个一维数组,当$data是数组的时候,会自动的将数组链接起来,相当于$data = implode(' ',$data);
也可以采用fwrite进行文件写入
$fp = fopen('./test.txt','w');
fwrite($fp,'hello');
fwrite($fp,'world');
fclose($fp); 删除文件:使用unlink函数进行文件删除。unlink($filename);
删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。rmdir($dir);
如果文件中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。
foreach(glod("*") as $filename){
unlink($filename);
}
相关文章推荐
- PHP进阶(第五弹:文件系统)
- 6.磁盘配额与进阶文件系统管理
- 用php 执行PhantomJS文件,php中使用exec,system等函数调用系统命令
- [PHP]文件系统
- Linux系统下Apache日志文件设置、更改默认网站目录、防止php木马跨站设置、禁止空主机头
- 【ci框架】codeIgniter.php:系统初始化文件解读
- PHP文件系统-文件路径操作和权限
- PHP安全-文件系统浏览
- UCHOME系统common.php文件解析
- ajaxplorer-PHP中运行的文件管理系统
- php学习笔记(10)—— 文件管理系统
- PHP简单文件管理系统
- 使用PHP维护文件系统
- PHP文件系统-文件上传类
- 鸟哥的Linux私房菜(基础篇)- 第十五章、磁碟配额(Quota)与进阶文件系统管理
- 文件系统--php基础最详细教程
- PHP - Manual手册 - Function Reference函数参考 - File System Related Extensions文件系统相关扩展 - Filesystem文件系统 - Filesystem Functions文件系统函数 -
- PHP - Manual手册 - 函数参考 - Filesystem 文件系统函数 - file_exists检查文件或目录是否存在
- 【PHP夯实基础系列】PHP日期,文件系统等知识点