您的位置:首页 > 编程语言 > PHP开发

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
,将会返回包括以下单元的数组array:dirname,basename和extension(如果有),以及filename。   
[/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
文件系统指针,是典型地由fopen()创建的resource(资源)。

返回值:返回一个数组具有该文件的统计信息,该数组的格式详细说明于手册中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
当成一个普通的文件名继续执行下去。

    

[b]fopen()
mode
的可能值列表[/b]
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
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_PATH
canbeusedtotriggerincludepathsearch.

     context:Avalidcontextresourcecreatedwithstream_context_create().如果你不需要自定义context,可以用
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:
文件指针必须是有效的,必须指向由fopen()或fsockopen()成功打开的文件(并还未由fclose()关闭)。

 
length
:从
handle
指向的文件中读取一行并返回长度最多为
length
-1字节的字符串。碰到换行符(包括在返回值中)、EOF或者已经读取了length-1字节后停止(看先碰到那一种情况)。如果没有指定
length
,则默认为1K,或者说1024字节。

 

  13、ftell();--返回文件指针读/写的位置

intftell(resource$handle)
//返回由handle指定的文件指针的位置,也就是文件流中的偏移量。


  参数:
handle:
文件指针必须是有效的,且必须指向一个通过fopen()或popen()成功打开的文件。在附加模式(加参数"a"打开文件)中ftell()会返回未定义错误。

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:
文件系统指针,是典型地由fopen()创建的resource(资源)。

     offset:
偏移量。要移动到文件尾之前的位置,需要给
offset
传递一个负值,并设置
whence
SEEK_END


    whence
valuesare:
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
文件系统指针,是典型地由fopen()创建的resource(资源)。

     
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的更多信息请阅读chmod()页面。

mkdir("d:/test/test1",0700);


  3、opendir();--打开目录句柄

resourceopendir(string$path[,resource$context])
//打开一个目录句柄,可用于之后的closedir(),readdir()和rewinddir()调用中。


  参数:
path
要打开的目录路径

    context
参数的说明见手册中的StreamsAPI一章。

  4、readdir();--从目录句柄中读取条目

stringreaddir([resource$dir_handle])
//返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。


  参数:
dir_handle
目录句柄的resource,之前由opendir()打开

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: