一、解析路径
1、basename--返回路径中的文件名部分
string basename(string $path [,string $suffix])
给出一个包含指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以suffix结束的,那这一部分也会被去掉。
<?php
$filename = __FILE__;
echo $filename; //C:\wamp\www\demo.php
echo basename($filename); //demo.php
echo basename($filename,‘.php‘); //demo
?>
扩展内容--魔术常量:
__LINE__:文件中当前的行号
__FILE__:文件的完成路径和文件名
__DIR__:文件所在的目录,等价于dirname(__FILE__)
__FUNCTION__:函数名称
__CLASS__:类的名称
__METHOD__:类的方法名
__NAMESPACE__:当前命名空间的名称
<?php
namespace Demo;
header("content-type:text/html;charset=utf-8");
echo ‘当前的行号是:‘.__LINE__.‘<br>‘; //当前的行号是:4
echo ‘当前文件所在的目录是:‘.__DIR__.‘<br>‘; //当前文件所在的目录是:C:\wamp\www
echo ‘当前命名空间的名称是:‘.__NAMESPACE__.‘<br>‘; // 当前命名空间的名称是:Demo
echo ‘当前文件的完成路径和文件名是:‘.__FILE__.‘<br>‘; //当前文件的完成路径和文件名是:C:\wamp\www\demo.php
echo ‘函数的名称是:‘.demo1().‘<br>‘; //函数的名称是:Demo\demo1
function demo1(){
return __FUNCTION__;
}
class demo{
function __construct(){
echo ‘当前的类名是:‘.__CLASS__.‘<br>‘;
}
function demo2(){
echo ‘当前调用类的方法是:‘. __METHOD__;
}
}
$demo = new demo(); //当前的类名是:Demo\demo
$demo->demo2(); //当前调用类的方法是:Demo\demo::demo2
?>
2、dirname()--返回路径的目录部分
string dirname(string $path)
给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名
<?php
$filename = __FILE__;
echo $filename; //C:\wamp\www\demo.php
echo dirname($filename); //C:\wamp\www
?>
3、pathinfo()--返回文件路径的信息
mixed pathinfo(string $path [,int $option])
返回一个关联数组包含有path的信息。包括以下的数组单元:dirname、basename和extension。
可以通过参数option指定要返回哪些单元。它们包括PATHINFO_DIRNAME、PATHINFO_BASENAME和PATHINFO_EXTENSION。
<?php
$filename = __FILE__;
echo $filename; //C:\wamp\www\demo.php
var_dump(pathinfo($filename));
/*array
‘dirname‘ => string ‘C:\wamp\www‘ (length=11)
‘basename‘ => string ‘demo.php‘ (length=8)
‘extension‘ => string ‘php‘ (length=3)
‘filename‘ => string ‘demo‘ (length=4)*/
echo pathinfo($filename,PATHINFO_DIRNAME);//C:\wamp\www
?>
二、文件类型
1、filetype()--取得文件类型
string filetype(string $filename);
返回文件的类型。可能的值有fifo,char,dir,block,link,file和unknown。
<?php
$filename = __FILE__;
echo filetype($filename);//file
$dirname = dirname($filename);
echo filetype($dirname);//dir
?>
三、得到给定文件有用信息数组
1、fstat()--通过已打开的文件指针取得文件信息
array fstat(resource $handle);
获取由文件指针handle所打开文件的统计信息。
本函数和stat()函数相似,除了它是作用于已打开的文件指针而不是文件名
<?php
$handle = fopen(‘common_inc.php‘,‘r‘);
var_dump(fstat($handle));
fclose($handle);
var_dump(stat(‘common_inc.php‘));
/*array
0 => int 0
1 => int 0
2 => int 33206
3 => int 1
4 => int 0
5 => int 0
6 => int 0
7 => int 49
8 => int 1455851675
9 => int 1455851686
10 => int 1455851675
11 => int -1
12 => int -1
‘dev‘ => int 0
‘ino‘ => int 0
‘mode‘ => int 33206
‘nlink‘ => int 1
‘uid‘ => int 0
‘gid‘ => int 0
‘rdev‘ => int 0
‘size‘ => int 49
‘atime‘ => int 1455851675
‘mtime‘ => int 1455851686
‘ctime‘ => int 1455851675
‘blksize‘ => int -1
‘blocks‘ => int -1*/
?>
四、计算大小
1、filesize()--取得文件大小
int filesize(string $filename);
返回文件大小的字节数。
<?php
echo filesize(‘common_inc.php‘);//49
?>
2、disk_free_space()--返回目录的可用空间
float disk_free_space(string $directory)
给出一个包含一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回可用的字节数。
<?php
$dirname = dirname(__FILE__);
//echo $dirname;//C:\wamp\www
echo disk_free_space($dirname);//返回可用的字节数
// $df 包含根目录下可用的字节数
echo disk_free_space("/");
//在 Windows 下:
echo disk_free_space("C:");
echo disk_free_space("D:");
?>
3、disk_total_space()--返回一个目录的磁盘总大小
Float disk_total_space(string $directory)
给出一个包含一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回所有的字节数。
<?php
$dirname = dirname(__FILE__);
//echo $dirname;//C:\wamp\www
echo disk_total_space($dirname);//返回目录的总大小
// $df 包含 "/" 目录的磁盘大小
echo disk_total_space("/");
//在 Windows 下:
echo disk_total_space("C:");
echo disk_total_space("D:");
?>
另:如需要计算一个目录大小,可以编写一个递归函数实现
<?php
$dirname = dirname(__FILE__);
echo dir_size($dirname);
function dir_size($dir){
$dir_size = 0;
if($db = @opendir($dir)){
while(false !== ($filename = readdir($db))){
if($filename != ‘.‘ && $filename != ‘..‘){
if(is_file($dir.‘/‘.$filename)){
$dir_size += filesize($dir.‘/‘.$filename);
}elseif(is_dir($dir.‘/‘.$filename)){
$dir_size += dir_size($dir.‘/‘.$filename);
}
}
}
}
closedir($db);
return $dir_size;
}
?>
五、访问与修改时间
1、fileatime()--取得文件上次访问的时间
2、filectime()--取得文件的inode修改时间
3、filemtime()--取得文件修改时间
int fileatime(string $filename)
返回文件上次被访问的时间,如果出错则返回false。时间以unix时间戳的方式返回。
<?php
header("content-type:text/html; charset=‘utf-8‘");
$filename = basename(__FILE__);
//$filename = ‘common_inc.php‘;
if(file_exists($filename)){
echo fileatime($filename);
echo $filename.‘上次被访问的时间是:‘.date(‘Y-m-d H:i:s‘,fileatime($filename));
}
?>