PHP常用文件函数和目录函数整理
2016-09-01 16:27
253 查看
一、常用文件函数库
1、basename();--返回路径中的文件名部分。
stringbasename(string$path[,string$suffix]) //给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。
参数:
path一个路径。在Windows中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)
suffix如果文件名是以
suffix结束的,那这一部分也会被去掉。
返回值:返回
path的基本的文件名。
$path='d:/test/test.txt';
echobasename($path);
echo"<br>";
echobasename($path,'.txt');
2、dirname();--返回路径中目录部分
stringdirname(string$path)
//给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。
参数:
path,一个路径。在Windows中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。
返回值:返回path的父目录。如果在
path中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把
path中结尾的/component(最后一个斜线以及后面部分)去掉之后的字符串。
$path='d:/test/test.txt';
echobasename($path);
echo"<br>";
echobasename($path,'.txt');
echo"<br>";
echodirname($path);
3、pathinfo();--返回文件路径的信息
mixedpathinfo(string$path[,int$options=PATHINFO_DIRNAME|PATHINFO_BASENAME|PATHINFO_EXTENSION|PATHINFO_FILENAME])
//pathinfo()返回一个关联数组包含有path的信息。返回关联数组还是字符串取决于options。
参数:[code]path要解析的路径。
options如果指定了,将会返回指定元素;它们包括:
PATHINFO_DIRNAME,
PATHINFO_BASENAME和
PATHINFO_EXTENSION或
PATHINFO_FILENAME。如果没有指定
options默认是返回全部的单元。
返回值:如果没有传入
options,将会返回包括以下单元的数组
[/code]
$path='d:/test/test.txt';
var_dump(pathinfo($path));
4、filetype();--取得文件类型
stringfiletype(string$filename)
//返回文件的类型。
参数:[code]filename文件的路径。[/code]
返回值:返回文件的类型。可能的值有fifo,char,dir,block,link,file和unknown。如果出错则返回[code]FALSE。如果stat调用失败或者文件类型未知的话filetype()还会产生一个
E_NOTICE消息。[/code]
$path='d:/test/test.txt';
echofiletype($path);
//结果file
5、fstat()和stat();
⑴、fstat()-通过已打开的文件指针取得文件信息arrayfstat(resource$handle)
//获取由文件指针handle所打开文件的统计信息。本函数和stat()函数相似,除了它是作用于已打开的文件指针而不是文件名。
参数:
handle文件系统指针,是典型地由
返回值:返回一个数组具有该文件的统计信息,该数组的格式详细说明于手册中stat()页面里。
⑵、stat()--给出文件的信息
arraystat(string$filename)
//获取由filename指定的文件的统计信息。如果filename是符号连接,则统计信息是关于被连接文件本身的,而不是符号连接。
//lstat()和stat()相同,只除了它会返回符号连接的状态。
参数
:filename文件的路径.
$path='d:/test/test.txt';
$fp=fopen("d:/test/test.txt","r");
$fstat=fstat($fp);
fclose($fp);
var_dump($fstat);
6、filesize();--取得文件大小
intfilesize(string$filename)
//取得指定文件的大小。
参数:
filename文件的路径。
返回值:返回文件大小的字节数,如果出错返回
FALSE并生成一条
E_WARNING级的错误。
<?php
//输出类似:test.txt:bytes
$filename='d:/test/test.txt';
echo$filename.':'.filesize($filename).'bytes';
?>
//结果:d:/test/test.txt:12bytes
7、disk_free_space();--返回目录中的可用空间
floatdisk_free_space(string$directory)
//给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回可用的字节数。
参数:directory文件系统目录或者磁盘分区。
header("Content-Type:Text/html;charset=utf8");
$path='d:/test/test.txt';
$df=disk_free_space("d:/");
echo$df."字节";
8、disk_total_space();--返回一个目录的磁盘总大小
floatdisk_total_space(string$directory)
//给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回所有的字节数。【译者注】本函数返回的是该目录所在的磁盘分区的总大小,因此在给出同一个磁盘分区的不同目录作为参数所得到的结果完全相同。在Unix和Windows200x/XP中都支持将一个磁盘分区加载为一个子目录,这时正确使用本函数就很有意义。
参数:
directory文件系统的目录或者磁盘分区
9、fopen($filepath,$mode)
resourcefopen(string$filename,string$mode[,bool$use_include_path=false[,resource$context]])
//fopen()将filename指定的名字资源绑定到一个流上
参数:filename如果
filename是"scheme://..."的格式,则被当成一个URL,PHP将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP将发出一条消息来帮助检查脚本中潜在的问题并将
filename当成一个普通的文件名继续执行下去。
mode | 说明 |
---|---|
'r' | 只读方式打开,将文件指针指向文件头。 |
'r+' | 读写方式打开,将文件指针指向文件头。 |
'w' | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'w+' | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'a' | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'a+' | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'x' | 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条 E_WARNING级别的错误信息。如果文件不存在则尝试创建之。这和给底层的open(2)系统调用指定O_EXCL|O_CREAT标记是等价的。 |
'x+' | 创建并以读写方式打开,其他的行为和'x'一样。 |
<?php
$handle=fopen("/home/rasmus/file.txt","r");
$handle=fopen("/home/rasmus/file.gif","wb");
$handle=fopen("http://www.example.com/","r");
$handle=fopen("ftp://user:password@example.com/somefile.txt","w");
?>
10、file();--把整个文件读入一个数组中
arrayfile(string$filename[,int$flags=0[,resource$context]])
//把整个文件读入一个数组中。
参数:
filename文件的路径。
flags可选参数
flags可以是以下一个或多个常量:
1
、FILE_USE_INCLUDE_PATH在
2、FILE_IGNORE_NEW_LINES在数组每个元素的末尾不要添加换行符
3、FILE_SKIP_EMPTY_LINES跳过空行。
context一个上下文资源,创建stream_context_create()函数。
<?php
//将一个文件读入数组。本例中通过HTTP从URL中取得HTML源文件。
$lines=file('http://www.example.com/');
//在数组中循环,显示HTML的源文件并加上行号。
foreach($linesas$line_num=>$line){
echo"Line#<b>{$line_num}</b>:".htmlspecialchars($line)."<br/>\n";
}
//另一个例子将web页面读入字符串。参见file_get_contents()。
$html=implode('',file('http://www.example.com/'));
//从PHP5开始可以使用可选标记参数
$trimmed=file('somefile.txt',FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
?>
11、file_get_contents();--将整个文件读入一个字符串
stringfile_get_contents(string$filename[,bool$use_include_path=false[,resource$context[,int$offset=-1[,int$maxlen]]]])
//和file()一样,只除了file_get_contents()把文件读入一个字符串。将在参数offset所指定的位置开始读取长度为maxlen的内容。如果失败,file_get_contents()将返回FALSE。
参数:
filename:要读取的文件的名称。
use_include_path:AsofPHP5the
FILE_USE_INCLUDE_PATHcanbeusedtotrigger
context:Avalidcontextresourcecreatedwith
NULL来忽略。
header("Content-Type:Text/html;charset=utf8");
//<=PHP5
$file=file_get_contents('d:/test/test.txt',true);
echo$file.'<br>';
//>PHP5
$file=file_get_contents('d:/test/test.txt',FILE_USE_INCLUDE_PATH);
echo$file;
//结果
//thisistest
//thisistest
12、fgets();--从文件指针中读取一行
stringfgets(resource$handle[,int$length])
//从文件指针中读取一行。
参数:
handle:文件指针必须是有效的,必须指向由
length:从
handle指向的文件中读取一行并返回长度最多为
length-1字节的字符串。碰到换行符(包括在返回值中)、EOF或者已经读取了length-1字节后停止(看先碰到那一种情况)。如果没有指定
length,则默认为1K,或者说1024字节。
13、ftell();--返回文件指针读/写的位置
intftell(resource$handle)
//返回由handle指定的文件指针的位置,也就是文件流中的偏移量。
参数:
handle:文件指针必须是有效的,且必须指向一个通过
header("Content-Type:Text/html;charset=utf8");
//opensafileandreadsomedata
$fp=fopen("d:/test/test.txt","r");
$data=fgets($fp,4);
//wherearewe?
echoftell($fp);//结果3
fclose($fp);
14、fseek();--在文件指针中定位
intfseek(resource$handle,int$offset[,int$whence=SEEK_SET])
//在与handle关联的文件中设定文件指针位置。新位置从文件头开始以字节数度量,是以whence指定的位置加上offset。
参数:
handle:文件系统指针,是典型地由
offset:偏移量。要移动到文件尾之前的位置,需要给
offset传递一个负值,并设置
whence为
SEEK_END。
whencevaluesare:
1、SEEK_SET-设定位置等于
offset字节。2、
SEEK_CUR-设定位置为当前位置加上
offset。2、
SEEK_END-设定位置为文件尾加上
offset。
header("Content-Type:Text/html;charset=utf8");
$fp=fopen('d:\test\test.txt','r');
//readsomedata
$data=fgets($fp,4096);
//movebacktothebeginningofthefile
//sameasrewind($fp);
fseek($fp,0);
15、flock();--轻便的咨询文件锁定
boolflock(resource$handle,int$operation[,int&$wouldblock])
//flock()允许执行一个简单的可以在任何平台中使用的读取/写入模型(包括大部分的Unix派生版和甚至是Windows)。
参数:
handle文件系统指针,是典型地由
operation可以是以下值之一:1、
LOCK_SH取得共享锁定(读取的程序)。2、
LOCK_EX取得独占锁定(写入的程序。3、
LOCK_UN释放锁定(无论共享或独占)。
如果不希望flock()在锁定时堵塞,则是
LOCK_NB(Windows上还不支持)。
wouldblock:如果锁定会堵塞的话(EWOULDBLOCK错误码情况下),可选的第三个参数会被设置为
TRUE。(Windows上不支持)
if(flock($fp,LOCK_EX)){//进行排它型锁定
ftruncate($fp,0);//truncatefile
fwrite($fp,"Writesomethinghere\n");
fflush($fp);//flushoutputbeforereleasingthelock
flock($fp,LOCK_UN);//释放锁定
}else{
echo"Couldn'tgetthelock!";
}
fclose($fp);
16、is_readable--判断给定文件名是否可读
boolis_readable(string$filename)
//判断给定文件名是否存在并且可读。
参数:
filename:文件的路径。
返回值:如果由
filename指定的文件或目录存在并且可读则返回
TRUE,否则返回
FALSE。
$filename='d:\test\test.txt';
if(is_readable($filename)){
echo'Thefileisreadable';
}else{
echo'Thefileisnotreadable';
}
//Thefileisreadable
17、is_writeable--判断给定的文件名是否可写
boolis_writable(string$filename)
//如果文件存在并且可写则返回TRUE。filename参数可以是一个允许进行是否可写检查的目录名。
参数:
filename要检查的文件名称。
$filename='d:\test\test.txt';
if(is_writeable($filename)){
echo'Thefileiswriteable';
}else{
echo'Thefileisnotwriteable';
}
//Thefileiswriteable
18、chown();--改变文件的所有者
boolchown(string$filename,mixed$user)
//尝试将文件filename的所有者改成用户user(由用户名或用户ID指定)。只有超级用户可以改变文件的所有者。
参数:
filename:文件路径。
user:用户名或数字。
二、目录函数
1、is_dir();--判断给定文件名是否是一个目录
boolis_dir(string$filename)
//判断给定文件名是否是一个目录。
参数:
filename:如果文件名存在并且为目录则返回
TRUE。如果
filename是一个相对路径,则按照当前工作目录检查其相对路径。
$filename='d:\test\test.txt';
var_dump(is_dir('$filename'));//bool(false)
var_dump(is_dir('d:\test'));//bool(true)
2、mkdir();--新建目录
boolmkdir(string$pathname[,int$mode=0777[,bool$recursive=false[,resource$context]]])
//尝试新建一个由pathname指定的目录。
参数:
pathname:目录的路径。
mode:默认的mode是0777,意味着最大可能的访问权。有关mode的更多信息请阅读
mkdir("d:/test/test1",0700);
3、opendir();--打开目录句柄
resourceopendir(string$path[,resource$context])
//打开一个目录句柄,可用于之后的closedir(),readdir()和rewinddir()调用中。
参数:
path要打开的目录路径
context参数的说明见手册中的
4、readdir();--从目录句柄中读取条目
stringreaddir([resource$dir_handle])
//返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
参数:
dir_handle目录句柄的
header("Content-Type:Text/html;charset=utf8");
if($handle=opendir('d:/test')){
echo"Directoryhandle:$handle\n";
echo"Files:\n";
/*这是正确地遍历目录方法*/
while(false!==($file=readdir($handle))){
echo"$file\n";
}
/*这是错误地遍历目录的方法
while($file=readdir($handle)){
echo"$file\n";
}
*/
closedir($handle);
}
相关文章推荐
- 基于PHP常用文件函数和目录函数整理
- PHP常用文件函数和目录函数整理
- 跟我学习php文件和目录常用函数-上篇
- PHP常用获取文件路径的函数集合整理
- 我常用的自定义函数之rmdir php删除目录及目录下的所有文件
- php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
- PHP - Manual手册 - 函数参考 - Filesystem 文件系统函数 - file_exists检查文件或目录是否存在
- Delphi 文件、目录等常用操作函数 - delphi - gliethttp
- PHP 删除一个目录及目录下的所有文件的函数代码
- php判断文件和目录函数
- php中删除文件或目录的函数
- 【推荐】有趣儿的PHP文件操作常用函数总结
- PHP 采集常用函数整理
- PHP chmod 函数与批量修改文件目录权限
- PHP - Manual手册 - 函数参考 - Directory 目录函数 - scandir列出指定路径中的文件和目录
- php目录操作函数之获取目录与文件的类型
- php移动文件指针常用的几个函数(转)
- PHP chmod 函数与批量修改文件目录权限
- php自定义函数之递归删除文件及目录
- PHP ZipArchive::extractTo()函数.zip文件目录遍历漏洞