1.基本文件类型
File 普通文件,如文本文件、可执行文件。
Dir 目录文件,比如某个文件夹
Unknow 未知文件
在windows中只有上面三种文件类型,如果是linux系统还有下面文件类型
Block 块设备,比如某个磁盘分区
Char 字符设备,比如键盘、打印机
Fifo 管道,用来将数据从一个进程传递到另一个进程
Link 链接,相当于windows中的快捷方式
使用filetype获得文件的类型
1 <?php2 ????/*使用filetype()获取文件类型*/3 4 ????echo filetype(__FILE__);//file5 ????echo filetype(__DIR__);//dir6 ?>
判断文件类型
1 <?php2 ????/*使用filetype()获取文件类型*/3 4 ????echo is_file(__FILE__);//true5 ????echo is_dir(__DIR__);//true6 ?>
2.文件的属性
1 <?php 2 ????/*file_exist()判断文件是否存在*/ 3 ????if(file_exists(__FILE__)) echo "文件".__FILE__."存在<br>"; 4 ????if(file_exists(__DIR__)) echo "目录".__DIR__."存在<br>"; 5 ?6 ????/*filesize()取得文件的大小,以字节为单位*/ 7 ????/*注:是取得文件的大小不是目录*/ 8 ????echo "文件".__FILE__."的大小是".filesize(__FILE__)."字节<br>"; 9 10 ????/*is_readable()判断文件是否可读*/11 ????if(is_readable(__FILE__)) echo "文件".__FILE__."可读<br>";12 13 ????/*is_writable()判断文件是否可写*/14 ????if(is_readable(__FILE__)) echo "文件".__FILE__."可写<br>";15 16 ????/*is_executable()判断文件是否可执行*/17 ????if(is_readable(__FILE__)) echo "文件".__FILE__."可执行<br>";18 19 ????date_default_timezone_set(‘PRC‘);20 21 ????/*filectime()文件的创建时间*/22 ????echo "文件的创建时间为".date(‘Y/m/d H:i:s‘,filectime(__FILE__))."<br>";23 24 ????/*filemtime()文件的修改时间*/25 ????echo "文件的修改时间为".date(‘Y/m/d H:i:s‘,filemtime(__FILE__))."<br>";26 27 ????/*fileatime()文件的最后访问时间*/28 ????echo "文件的最后访问时间".date(‘Y/m/d H:i:s‘,filectime(__FILE__))."<br>";29 30 ????/*stat()获取文件大部分属性*/31 ????print_r(stat(__FILE__));32 ?>
注:windows系统下默认是不会更新访问时间的,具体可以参考这里。
3.目录的基本操作
路径分隔符
Linux系统中以‘/‘做为路径分隔符,像这样E:/xampp/htdocs/test.php
Windows系统中以‘\‘作为路径分隔符E:\xampp\htdocs\test.php,但是Windows系统也是支持‘/‘作为分隔符的。
所以为了保证程序的可移植性,最好用Linux的写法。
解析路径
1 <?php 2 ????/*basename()返回路径中的文件名*/ 3 ????echo "路径".__FILE__."的文件名是".basename(__FILE__)."<br>"; 4 ?5 ????/*dirname()返回一个路径中的目录部分*/ 6 ????echo "路径".__FILE__."的目录名是".dirname(__FILE__)."<br>"; 7 ?8 ????/*pathinfo()将一个路径中的信息以数组形式返回*/ 9 ????print_r(pathinfo(__FILE__));10 ?>
遍历目录
1 <?php 2 ????/*opendir()打开一个目录,接受一个路径,返回该目录的资源句柄*/ 3 ????var_dump($dir=opendir(__DIR__));//resource(3) of type (stream) 4 ????echo "<br>"; 5 ?6 ????/*readdir()接受一个资源句柄返回该目录当前指针位置的文件名,并将指针向下移动*/ 7 ????/*前两个文件名是 . 和 ..表示当前目录和上一级目录*/ 8 ?????9 ????echo readdir($dir)."<br>";//.10 ????echo readdir($dir)."<br>";//..11 12 ????/*rewinddir()将目录指针重置到开头出*/13 ????rewinddir($dir);14 ????echo readdir($dir)."<br>";//.15 16 ????/*closedir()释放资源*/17 ????closedir($dir);18 ?>
1 <?php 2 ????/*遍历出目录的结构*/ 3 ?4 ????function dirlist($dir){ 5 ????????$sdir=opendir($dir); 6 ????????while ($fname=readdir($sdir)) ?7 ????????{ 8 ????????????echo $fname."<br>"; 9 ????????}10 ????????closedir($sdir);11 ????}12 13 ????dirlist(__DIR__);14 ?>
计算目录大小
1 <?php 2 ????/*我们可以用filesize()查看文件的大小*/ 3 ????/*PHP没有提供统计目录大小的函数,但我们可以通过前面学习的写一个*/ 4 ?5 ????function dirsize($dir){ 6 ????????$size=0; 7 ????????if (!$dir_s=opendir($dir)) ?8 ????????{ 9 ????????????return false;10 ????????}11 ????????while($file=readdir($dir_s))12 ????????{13 ????????????if ($file==‘.‘||$file==‘..‘) 14 ????????????{15 ????????????????continue;16 ????????????}17 ????????????if(is_dir($dir.‘/‘.$file))18 ????????????{19 ????????????????$size+=dirsize($dir.‘/‘.$file);20 ????????????}21 ????????????else22 ????????????{23 ????????????????$size+=filesize($dir.‘/‘.$file);24 ????????????}25 26 ????????????27 ????????}28 ????????return $size;29 ????}30 31 ????echo dirsize(__DIR__);32 ?>
注:php5表示的最大整数为PHP_INT_MAX,这个数如果等于字节数,那么表示的文件大小基本上等于2GB,所以如果想计算2GB以上的文件,请换PHP7
复制和删除目录
1 <?php 2 ????/*copy()函数用来赋值问价*/ 3 ????/*将当前目录下的test.php复制到testcookie目录下*/ 4 ????copy(‘test.php‘,‘./testcookie/test.php‘);//新的路径名必须存在否则会报错 5 ?6 ????/*unlink()删除一个文件*/ 7 ????unlink(‘./testcookie/test.php‘); 8 ?9 ????/*创建目录mkdir()*/10 ????mkdir(‘testdir‘);11 12 ????/*PHP没有复制目录的函数不过我们可以用mkdir()和copy()写一个*/13 ????function copydir($sdir,$ddir)14 ????{15 ????????if(is_dir($sdir))16 ????????{17 ????????????if(file_exists($ddir))18 ????????????{19 ????????????????echo "目的路径已经存在";20 ????????????????return false;21 ????????????}22 ????????????else23 ????????????{24 ????????????????mkdir($ddir);25 ????????????????$dir_handle=opendir($sdir);26 ????????????????while($filename=readdir($dir_handle))27 ????????????????{ ???28 ????????????????????if($filename=="."||$filename=="..") continue;29 ????????????????????if(is_dir($sdir."/".$filename))30 ????????????????????{31 ????????????????????????copydir($sdir."/".$filename,$ddir."/".$filename);32 ????????????????????}33 ????????????????????else34 ????????????????????{35 ????????????????????????copy($sdir."/".$filename,$ddir."/".$filename);36 ????????????????????}37 ????????????????}38 39 ????????????????closedir($dir_handle);40 ????????????}41 ????????}42 ????????else43 ????????{44 ????????????echo "不是目录无法创建";45 ????????????return false;46 ????????}47 ????}48 49 ????50 ????/*rmdir()删除目录,该目录必须为空否则删除失败*/51 ????//rmdir(‘testdir‘);52 53 ????/*用rmdir()和unlink()可以写一个级连删除目录的函数*/54 ????function deldir($dir)55 ????{56 ????????if(is_dir($dir))57 ????????{58 ????????????$dir_handle=opendir($dir);59 ????????????while($filename=readdir($dir_handle))60 ????????????{61 ????????????????if($filename=="."||$filename=="..") continue;62 ????????????????if(is_dir($dir."/".$filename))63 ????????????????{64 ????????????????????deldir($dir."/".$filename);65 ????????????????}66 ????????????????else67 ????????????????{68 ????????????????????unlink($dir."/".$filename);69 ????????????????}70 71 ????????????}72 ????????????closedir($dir_handle);73 ????????????rmdir($dir);74 ????????}75 ????????else76 ????????{77 ????????????echo "不是目录";78 ????????????return false;79 ????????}80 ????}81 ????deldir(‘./testcooki‘);82 ?>
PHP-目录的基本操作
原文地址:https://www.cnblogs.com/patermenkey/p/8337911.html