PHP常用的文件操作函数集锦

允我心安 提交于 2020-03-19 13:58:15

一、解析路径

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));
}
?>

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!