php目录和文件函数,php常用文件和目录函数有哪些?

6575a4433e4e6f7e6f62a15b18de17e6.png

php常用文件和目录函数

一、常用文件函数库

1、basename(); -- 返回路径中的文件名部分。string basename ( string $path [, string $suffix ] )

//给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。

参数:path 一个路径。在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)

suffix 如果文件名是以 suffix 结束的,那这一部分也会被去掉。

返回值:返回 path 的基本的文件名。$path = 'd:/test/test.txt';

echo basename($path);

echo "
";

echo basename($path,'.txt');

2、dirname(); -- 返回路径中目录部分string dirname ( string $path )

//给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。

参数:path,一个路径。在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。

返回值:返回 path 的父目录。 如果在 path 中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把path 中结尾的 /component(最后一个斜线以及后面部分)去掉之后的字符串。$path = 'd:/test/test.txt';

echo basename($path);

echo "
";

echo basename($path,'.txt');

echo "
";

echo dirname($path);

3、pathinfo(); --返回文件路径的信息mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )

//pathinfo() 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options。

参数:path 要解析的路径。

options 如果指定了,将会返回指定元素;它们包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和PATHINFO_EXTENSION 或 PATHINFO_FILENAME。如果没有指定 options 默认是返回全部的单元。

返回值:如果没有传入 options ,将会返回包括以下单元的数组 array:dirname,basename 和 extension(如果有),以 及filename。$path = 'd:/test/test.txt';

var_dump(pathinfo($path));

4、filetype();--取得文件类型string filetype ( string $filename )

//返回文件的类型。

参数:filename 文件的路径。

返回值: 返回文件的类型。 可能的值有 fifo,char,dir,block,link,file 和 unknown。如果出错则返回 FALSE。如果 stat 调用失败或者文件类型未知的话 filetype() 还会产生一个 E_NOTICE 消息。$path = 'd:/test/test.txt';

echo filetype($path);

//结果file

5、fstat()和stat();

⑴、fstat()-通过已打开的文件指针取得文件信息array fstat ( resource $handle )

//获取由文件指针 handle 所打开文件的统计信息。本函数和 stat() 函数相似,除了它是作用于已打开的文件指针而不是文件名。

参数:handle 文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

返回值: 返回一个数组具有该文件的统计信息,该数组的格式详细说明于手册中 stat() 页面里。

⑵、stat() --给出文件的信息array stat ( 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();--取得文件大小int filesize ( string $filename )

//取得指定文件的大小。

参数:filename 文件的路径。

返回值:返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。<?php

// 输出类似:test.txt: bytes

$filename = 'd:/test/test.txt';

echo $filename . ': ' . filesize($filename) . ' bytes';

?>

//结果:d:/test/test.txt: 12 bytes

7、disk_free_space(); -- 返回目录中的可用空间float disk_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(); --返回一个目录的磁盘总大小float disk_total_space ( string $directory )

//给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回所有的字节数。 【译者注】本函数返回的是该目录所在的磁盘分区的总大小,因此在给出同一个磁盘分区的不同目录作为参数所得到的结果完全相同。 在 Unix 和 Windows 200x/XP 中都支持将一个磁盘分区加载为一个子目录,这时正确使用本函数就很有意义。

参数:directory 文件系统的目录或者磁盘分区

9、fopen($filepath,$mode)resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )

//fopen() 将 filename 指定的名字资源绑定到一个流上

参数:

filename 如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。fopen()中mode的可能值列表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();--把整个文件读入一个数组中array file ( 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 ($lines as $line_num => $line) {

echo "Line #{$line_num} : " . htmlspecialchars($line) . "
\n";

}

// 另一个例子将 web 页面读入字符串。参见 file_get_contents()。

$html = implode('', file('http://www.example.com/'));

// 从 PHP 5 开始可以使用可选标记参数

$trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

?>

11、file_get_contents();-- 将整个文件读入一个字符串string file_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:As of PHP 5 the FILE_USE_INCLUDE_PATH can be used to trigger include path search.

context:A valid context resource created with stream_context_create(). 如果你不需要自定义 context,可以用 NULL 来忽略。header("Content-Type:Text/html;charset=utf8");

// <= PHP 5

$file = file_get_contents('d:/test/test.txt', true);

echo $file.'
';

// > PHP 5

$file = file_get_contents('d:/test/test.txt', FILE_USE_INCLUDE_PATH);

echo $file;

//结果

//this is test

//this is test

12、fgets();--从文件指针中读取一行string fgets ( resource $handle [, int $length ] )

//从文件指针中读取一行。

参数:handle:文件指针必须是有效的,必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

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

13、ftell();-- 返回文件指针读/写的位置int ftell ( resource $handle )//返回由 handle 指定的文件指针的位置,也就是文件流中的偏移量。

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

// opens a file and read some data

$fp = fopen("d:/test/test.txt", "r");

$data = fgets($fp, 4);

// where are we ?

echo ftell($fp); // 结果3

fclose($fp);

14、fseek();--在文件指针中定位int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )

//在与 handle 关联的文件中设定文件指针位置。 新位置从文件头开始以字节数度量,是以 whence 指定的位置加上 offset。

参数 :handle:文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

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

whence values are: 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');

// read some data

$data = fgets($fp, 4096);

// move back to the beginning of the file

// same as rewind($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);

}

更多相关知识,请访问 PHP中文网!!

相关标签:PHP函数

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值