«
PHP脚本编程中的文件系统函数库

时间:2008-5-31    作者:Deri    分类: 分享


   <ddvip_no_page /><p>  basename</p><p>  返回不含路径的文件字符串。</p><p>  语法: string basename(string path);</p><p>  返回值: 字符串</p><p>  函数种类: 文件存取</p><p>  内容说明: 将含路径及文件字符串中的路径拿掉,返回只含文件名的字符串。在 windows 系列的操作系统中,路径可以是斜线 (/) 或反斜线 ();在 unix 系列的操作系统,路径为斜线 (/)。</p><p>  使用范例</p><p>  下例中的 $file 变量值为 "index.php"</p><code><?php<br />$path = "/home/httpd/html/index.php";<br />$file = basename($path);<br />?></code></p><p>  参考 dirname()</p><p>  chgrp</p><p>  改变文件所属的群组。</p><p>  语法: int chgrp(string filename, mixed group);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明 本函数用来改变文件所属的群组,只有系统管理员权限可以任意改变文件所属群组,其余的使用者都只能改变本身拥有的文件。成功返回 true,失败返回 false;在 windows 系列操作系统中,本函数什么也不做就返回 true。</p><p>  参考 chown() chmod()</p><p>  chmod</p><p>  改变文件的属性。</p><p>  语法: int chmod(string filename, int mode);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数用来改变文件的属性。成功则返回 true、失败返回 false。在 mode 值中,系统不会自动将它加入 0 以获得正确的八进位演算,若要正确的使用,可以用下例第二行的方式。</p><p>  使用范例</p><p>  下二行都是将文件属性设为 rwxr-xr-x,但以第二行较好。</p><code><?<br />chmod("/mydir/myfile", 755 ); // mode 为十进位,可能有潜在错误<br />chmod("/mydir/myfile", 0755 ); // mode 为八进位,确定的属性值<br />?></code></p><p>  参考 chown() chgrp()</p><p>  chown</p><p>  改变文件的拥有者。</p><p>  语法: int chown(string filename, mixed user);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数用来改变文件的拥有人,只有系统管理员权限可以任意改变文件所属群组,其余的使用者都只能改变本身拥有的文件。成功返回 true,失败返回 false;在 windows 系列操作系统中,本函数什么也不做就返回 true。</p><p>  参考 chmod()</p><p>  clearstatcache</p><p>  清除文件状态快取。</p><p>  语法: void clearstatcache(void);</p><p>  返回值: 无</p><p>  函数种类: 文件存取</p><p>  内容说明 对操作系统而言,使用 stat() 或 lstat() 二个函数是很耗资源的,尤其是当每次都要重新呼叫 stat() 及 lstat() 二个函数时,更是不经济的方式。因此为节省资源,php 系统会将文件状态放在快取内存中,以便随时使用。而本函数就是提供清除快取内存中文件信息的函数。受本函数影响的函数有 stat()、lstat()、file_exists()、is_writeable()、is_readable()、is_executable ()、is_file()、is_dir()、is_link()、filectime()、fileatime()、filemtime()、 fileinode()、filegroup()、fileowner()、filesize()、filetype() 及 fileperms() 等十八个。</p><p>  参考 stat() lstat() file_exists() is_writeable() is_readable() is_executable() is_file() is_dir() is_link() filectime() fileatime() filemtime() fileinode() filegroup() fileowner() filesize() filetype() fileperms()</p><p>  copy</p><p>  复制文件。</p><p>  语法: int copy(string source, string dest);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数用来复制文件。成功则返回 true、失败返回 false。</p><p>  使用范例</p><p>  本例复制文件,失败时显示复制失败的信息。</p><code><?<br />if (!copy($file, $file.'.bak')) {<br />print("复制文件 $file 失败...<br><br />");<br />}<br />?></code></p><p>  参考 rename()</p><p>  delete</p><p>  无用的项目。</p><p>  语法: void delete(string file);</p><p>  返回值: 无</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数为无用的项目。要删除文件用 unlink()、要删去变量用 unset()。</p><p>  参考 unlink() unset()</p><p>  dirname</p><p>  取得路径中的目录名。</p><p>  语法: string dirname(string path);</p><p>  返回值: 字符串</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回 path 中的目录名称。在 win32 系统中,用斜线 (/) 或者反斜线 () 都可以;但是其它的操作系统的路径都是 (/)。</p><p>  使用范例</p><p>  本例返回字符串 $file 为 "/etc"。</p><code><?<br />$path = "/etc/hostname";<br />$file = dirname($path);<br />?></code></p><p>  参考 basename()</p><p>  diskfreespace</p><p>  取得目录所在的剩余可用空间。</p><p>  语法: float diskfreespace(string directory);</p><p>  返回值: 浮点数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数用来取得目录所在储存装置的剩余空间,单位为位组 (byte)。</p><p>  使用范例</p><p>  本例可以知道根目录的剩余空间。</p><code><?<br />$df = diskfreespace("/");<br />?></code></p><p>  fclose</p><p>  关闭已打开的文件。</p><p>  语法: int fclose(int fp);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明:本函数用来关闭已经打开的文件的指针 fp。成功返回 true,失败则返回 false。其中的文件指针必须是有效的,且必须是已经用 fopen() 或 fsockopen() 成功开文件的指针。</p><p>  feof</p><p>  测试文件指针是否指到文件尾。</p><p>  语法: int feof(int fp);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数测试文件的指针是否指到文件尾 (end of file, eof)。若是成功或发生错误则返回 true 值,其它情形返回 false 值。其中的文件指针必须是有效的,且必须是已经用 fopen()、popen() 或 fsockopen() 成功开文件的指针。</p><p>  fgetc</p><p>  取得文件指针所指的字符。</p><p>  语法: string fgetc(int fp);</p><p>  返回值: 字符串</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数取得文件指针所指的字符,返回字符串类型的字符。指针若在 eof 则返回 false。其中的文件指针必须是有效的,且必须是已经用 fopen()、popen() 或 fsockopen() 成功开文件的指针。</p><p>  参考 fread() fopen() popen() fsockopen() fgets()</p><p>  fgetcsv</p><p>  取得文件指针所指行,并解析 csv 字段。</p><p>  语法: array fgetcsv(int fp, int length, string [delimiter]);</p><p>  返回值: 数组</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数与 fgets() 的功用类似,不同的地方在于本函数用来解析读取行的 csv 字段资料,并将其放入数组变量之中。其中的第三个参数 delimiter 若未指定,则使用内定值:逗号。其中的文件指针 fp 必须是有效的,且必须是已经用 fopen()、popen() 或 fsockopen() 成功开文件的指针。而第二个参数 length 的值必须要比 csv 文件最长一行的字符数还大。本函数若发生错误或者到文件尾 (eof, end of file),则会返回 false 值。若遇到空行,则传到数组结构的字符为空字符字段 (null),而不是当作发生错误的情形。</p><p>  使用范例</p><code><?<br />$row=1;<br />$fp = fopen("mycsv.csv","r");<br />while ($data = fgetcsv($fp,1000, ",")) {<br />$num = count($data);<br />print "<p>字段 $num 在第 $row 行: <br>";<br />$row++;<br />for ( $c=0; $c<$num; $c++ ) print $data[$c] . "<br>";<br />}<br />fclose($fp);<br />?></code></p><p>  fgets</p><p>  取得文件指针所指的行。</p><p>  语法: string fgets(int fp, int length);</p><p>  返回值: 字符串</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数取得文件指针所指的行,返回字符串长度为行的长度减一。若发生错误则返回 false。一般常遇到的陷阱是用 c 语言的经验来使用本函数,而 eof 时的处理方式则和 c 语言的 fgets() 不同。其中的文件指针必须是有效的,且必须是已经用 fopen()、popen() 或 fsockopen() 成功开文件的指针。</p><p>  使用范例</p><code><?php<br />$fd = fopen("/tmp/myfile.txt", "r");<br />while ($buffer = fgets($fd, 4096)) {<br />echo $buffer;<br />}<br />fclose($fd);<br />?></code></p><p>  参考: fread() fopen() popen() fsockopen() fgetc()</p><p>  fgetss</p><p>  取得文件指针所指的行,并去掉 html 语言标记。</p><p>  语法: string fgetss(int fp, int length);</p><p>  返回值: 字符串</p><p>  函数种类: 文件存取</p><p>  内容说明</p><p>  本函数除了 fgets() 的功能,并同时去掉取回字符串中的 html 语言及 php 语法的标记字符串。</p><p>  参考: fopen() popen() fsockopen() fgets() strip_tags()</p><p>  file</p><p>  将文件全部读入数组变量中。</p><p>  语法: array file(string filename);</p><p>  返回值: 数组</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数与 readfile() 类似,不同的地方为本函数将文件全部读出,并输出到数组的变量中,每行都是单独的数组元素。</p><p>  参考: fopen() popen() readfile()</p><p>  file_exists</p><p>  检查文件是否存在。</p><p>  语法: int file_exists(string filename);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数用来测试检查文件是否存在,返回 true 表示文件存在。返回值放在快取缓冲区中,可以参考 clearstatcache()。</p><p>  fileatime</p><p>  取得文件最后的存取时间。</p><p>  语法: int fileatime(string filename);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回指定文件 filename 的最后存取时间。返回 false 表示发生错误。返回值放在快取缓冲区中,可以参考 clearstatcache()。</p><p>  filectime</p><p>  取得文件最后的改变时间。</p><p>  语法: int filectime(string filename);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回指定文件 filename 的 inode 最后改变时间。返回 false 表示发生错误。返回值放在快取缓冲区中,可以参考 clearstatcache()。</p><p>  filegroup</p><p>  取得文件所属的群组。</p><p>  语法: int filegroup(string filename);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回指定文件的群组使用者 gid 值。返回 false 表示发生错误。返回值放在快取缓冲区中,可以参考 clearstatcache()。</p><p>  fileinode</p><p>  取得文件的 inode 值。</p><p>  语法: int fileinode(string filename);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回指定文件的 inode 值。返回 false 表示发生错误。返回值放在快取缓冲区中,可以参考 clearstatcache()。</p><p>  filemtime</p><p>  取得文件最后的修改时间。</p><p>  语法: int filemtime(string filename);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回指定文件 filename 的最后修改时间。返回 false 表示发生错误。返回值放在快取缓冲区中,可以参考 clearstatcache()。</p><p>  使用范例</p><p>  以下是 benbatten@home.com (29-apr-1999) 在 win95 上的实作范例,例中返回当页 homepage 的最后修改时间并将 filemtime() 返回的 unix 格式的时间字符串转换成 12 小时制的字符串。</p><p>  (注:由于本例的文件为 __file__ 表示目前的文件,其实和使用 getlastmod() 函数有相同的效果。)</p><code><?php<br />$filemod = filemtime(__file__);<br />$filemodtime = date("f j y h:i:s a", $filemod);<br />print("本页最后修改时间: $filemodtime");<br />?></code></p><p>  fileowner</p><p>  取得文件的拥有者。</p><p>  语法: int fileowner(string filename);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回指定文件拥有者的 uid 值。返回 false 表示发生错误。返回值放在快取缓冲区中,可以参考 clearstatcache()。</p><p>  fileperms</p><p>  取得文件的权限配置。</p><p>  语法: int fileperms(string filename);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回指定文件的权限配置值。返回 false 表示发生错误。返回值放在快取缓冲区中,可以参考 clearstatcache()。</p><p>  filesize</p><p>  获得文件的大小。</p><p>  语法: int filesize(string filename);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回指定文件的文件大小。返回 false 表示发生错误。返回值放在快取缓冲区中,可以参考 clearstatcache()。</p><p>  filetype</p><p>  获得文件的类型。</p><p>  语法: string filetype(string filename);</p><p>  返回值: 字符串</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回指定文件的文件类型。可能的返回类型有 fifo、char、dir、block、link、file 及 unknown 等等。返回 false 表示发生错误。返回值放在快取缓冲区中,可以参考 clearstatcache()。</p><p>  flock</p><p>  锁住文件。</p><p>  语法: boolean flock(int fp, int operation);</p><p>  返回值: 布尔值</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数用来锁住文件,使别的行程无法存取。传入的参数 fp 为文件的指针。参数 operation 的值为下列的数字之一:1 表示配置锁住文件可以允许别的行程读取;2 表示只有该行程可以写入文件;3 表示读写均锁住;4 则不锁住区块 (block)。而本函数无论在 unix 或是 windows 系列中的锁住效果都相近。执行成功则返回 true 值,否则返回 false 值。</p><p>  fopen</p><p>  打开文件或者 url。</p><p>  语法: int fopen(string filename, string mode);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 说明: 本函数可用来打开本地或者远端的文件。若参数 filename 为 "http://......" 则本函数利用 http 1.0 协议与服务器连接,文件指针则指到服务器返回文件的起始处。若参数 filename 为 "ftp://......." 则本函数会与服务器连接,文件指针指到指定的文件处。若 ftp 服务器没有支持被动模式 (passive mode ftp) 则返回失败值。打开的 ftp 文件可以是读取或写入其中之一,但不能读或写二种同时使用。其它的情形,本函数打开本地的文件,文件的指针则指向打开的文件。若开文件失败,则返回 false 值。</p><p>  字符串参数 mode 可以是下列的情形:</p><p>  'r' 开文件方式为只读,文件指针指到开始处。</p><p>  'r+' 开文件方式为可读写,文件指针指到开始处。</p><p>  'w' 开文件方式为写入,文件指针指到开始处,并将原文件的长度设为 0。若文件不存在,则建立新文件。</p><p>  'w+' 开文件方式为可读写,文件指针指到开始处,并将原文件的长度设为 0。若文件不存在,则建立新文件。</p><p>  'a' 开文件方式为写入,文件指针指到文件最后。若文件不存在,则建立新文件。</p><p>  'a+' 开文件方式为可读写,文件指针指到文件最后。若文件不存在,则建立新文件。</p><p>  'b' 若操作系统的文字及二进位文件不同,则可以用此参数,unix 系统不需要使用本参数。</p><p>  使用范例</p><p>  第一行为 unix 系统使用;第二行是 windows 系列系统的用法;第三、四行则为 url 的使用范例。</p><code><?<br />$fp = fopen("/home/rasmus/file.txt", "r");<br />$fp = fopen("c:mydatainfo.txt", "r");<br />$fp = fopen("http://www.php.net/", "r");<br />$fp = fopen("ftp://user:password@my.com/", "w");<br />?></code></p><p>  参考</p><p>  fclose() popen() fsockopen()</p><p>  fpassthru</p><p>  输出所有剩余资料。</p><p>  语法: int fpassthru(int fp);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数读取文件 fp 直到文件尾 (end of file, eof),并将资料输出到标准输出 (standard output)。若有错误发生,则返回 false 值。而文件 fp 必须由 fopen()、popen() 或 fsockopen() 打开成功的指针。当本函数读完文件,会自动将文件关闭,即 fp 变无效。如果只是要将文件输出到标准输出,可以使用 readfile() 会比用 fopen() 更好。</p><p>  参考: readfile() fopen() fclose() popen() fsockopen()</p><p>  fputs</p><p>  写到文件指针。</p><p>  语法: int fputs(int fp, string str, int [length]);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数即 fwrite(),只是一个别名。用来将字符串 str 写到文件指针。</p><p>  fread</p><p>  位组的方式读取文件。</p><p>  语法: string fread(int fp, int length);</p><p>  返回值: 字符串</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数读到指定长度的位组或到文件尾 eof。</p><p>  使用范例</p><code><?php<br />$filename = "/usr/local/myfile.txt";<br />$fd = fopen( $filename, "r" );<br />$contents = fread($fd, filesize($filename));<br />fclose( $fd );<br />?></code></p><p>  参考: readfile() fopen() fclose() fwrite() fgets() fgetss() file() fpassthru() popen() fsockopen()</p><p>  fseek</p><p>  移动文件指针。</p><p>  语法: int fseek(int fp, int offset);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数将文件 fp 的指针移到指定的偏移位 (offset) 上。使用本函数就像 c 语言中的 fseek(fp, offset, seek_set) 函数。成功则返回 0,失败则返回 -1 值。当 fp 由 fopen() 打开 "http://...." 或是 "ftp://...." 等 url 文件时,本函数无法作用。</p><p>  参考: ftell() rewind()</p><p>  ftell</p><p>  取得文件读写指针位置。</p><p>  语法: int ftell(int fp);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数返回文件 fp 的指针偏移位 (offset) 值。当发生错误时,返回 false 值。文件指针 fp 必须是有效的,且使用 fopen() 或者 popen() 二个函数打开方可作用。</p><p>  参考: fopen() popen() fseek() rewind()</p><p>  fwrite</p><p>  二进位位方式写入文件。</p><p>  语法: int fwrite(int fp, string string, int [length]);</p><p>  返回值: 整数</p><p>  函数种类: 文件存取</p><p>  内容说明: 本函数将字符串 string 写入文件资料流的指针 fp 上。若有指定长度 length,则会写入指定长度字符串,或是写到字符串结束。治募