首页 > php学习 > php常用函数 > PHP中目录与文件操作
2016
12-16

PHP中目录与文件操作

一、目录的基本操作

basename(string $path[,string $suffix]) 返回路径中最后一部分的文件夹名字(如果提供的路径中最后没有指定文件名)或者文件名(加后缀的文件名)

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

例:echo basename("/etc/sudoers.d", ".d"); 输出:sudoers(.d会去掉)

dirname(string $path) 返回给定路径中倒数第二个文件夹名字(如果提供的路径中最后没有指定文件名)或者文件名面前的目录部分

realpath(string $path) 返回规范化的绝对路径名(把目录中的../等换算成规范化路径)

pathinfo(string $path[,int $options=PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ]) 返回给定路径的信息

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

例:$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";(路径) // /www/htdocs/inc

echo $path_parts['basename'], "\n";(加后缀的文件名)// lib.inc.php

echo $path_parts['extension'], "\n";(文件后缀)// php

echo $path_parts['filename'], "\n"; (不加后缀的文件名)// lib.inc

opendir(string $path) 打开一个目录句柄,可用于之后的调用中。

readdir(resource $dir_handle) 从目录句柄中读取条目,返回目录中下一个文件的文件名

例:if ($handle = opendir('/path/files')) {

/* 这是正确地遍历目录方法 */

while (false !== ($file = readdir($handle))) {echo "$file\n";}

/* 这是错误地遍历目录的方法 */

while ($file = readdir($handle)) {echo "$file\n";}

}

返回文件名中有"."和".."两个文件名,可以用下面的去掉:(把echo "$file\n";替换成下面的)

if ($file != "." && $file != "..") {echo "$file\n";}

rewinddir(resource $dir_handle) 将 dir_handle 指定的目录流重置到目录的开头。

closedir(resource $dir_handle) 关闭打开的目录句柄

mkdir(string $pathname [, int $mode = 0777 [, bool $recursive = false]]) 新建目录

mode:默认的 mode 是 0777,意味着最大可能的访问权。mode 在 Windows 下被忽略。$recursive默认false,一次只能创建一层目录,当$recursive设置为true时,可以一次创建多层目录如mkdir('../a/b/c/d', 0777, true);

rmdir() 删除指定的目录, 该目录必须是空的,而且要有相应的权限。

scandir (string $directory[,int $sorting_order=0]) 列出指定路径中的文件和目录,返回一个 array,包含有 directory 中的文件和目录。

sorting_order:默认是按字母升序排列。如果使用了参数 sorting_order(设为1),则按字母降序排列。返回文件名中有"."和".."两个文件名

glob ( string $pattern [, int $flags = 0 ] ) 函数返回目录中所有与 pattern 匹配的文件或目录路径组成的数组。

flags有效值有:

GLOB_MARK - 在每个返回的项目中加一个斜线

GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)

GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式

GLOB_NOESCAPE - 反斜线不转义元字符

GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'

GLOB_ONLYDIR - 仅返回与模式匹配的目录项

GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误

示例一、取得所有的后缀为PHP的文件名组成的数组:

$files = glob(‘*.php’); print_r($files);

输出:Array([0] =>'phptest.php' , [1] =>'pi.php' , [2] =>'post_output.php' , ...)

示例二、查找多种后缀名,如或取PHP文件和TXT文件

$files = glob(‘*.{php,txt}’, GLOB_BRACE); print_r($files);

输出:Array([0] =>'phptest.php' , [1] =>'pi.php' , [2] =>'test.php' , [3] =>'log.txt' , [4] =>'test.txt' , ...)

示例三、可以加上路径:

$files = glob(‘../images/a*.jpg’); print_r($files);

输出:Array([0] =>'../images/apple.jpg' , [1] =>'../images/art.jpg' , ...)

二、文件的基本操作

fopen (string $filename,string $mode) 打开文件或者 URL

mode 参数指定了所要求到该流的访问类型。可以是以下:

'r' 只读方式打开,将文件指针指向文件头。

'r+' 读写方式打开,将文件指针指向文件头。

'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE

'x+' 创建并以读写方式打开,其他的行为和 'x' 一样。

'b'二进制文件,可以和上面每一项合用,如rb表示只读方式打开二进制文件,wb+表示以读写方式打开二进制文件

fread (resource $handle,int $length) 读取文件,从文件指针 handle 读取最多 length 个字节。返回所读取的字符串,该函数在读取了 length个字节或者到达了文件末尾时停止读取文件

fgets(resource $handle) 从文件指针中读取一行

file (string $filename) 把整个文件读入一个数组中。

file_get_contents (string $filename) 将整个文件读入一个字符串

file_put_contents($file, $current [, $flags]) 将字符串写入文件中,和依次调用 fopen(),fwrite() 以及 fclose() 功能一样,该函数将返回写入到文件内数据的字节数,失败时返回FALSE

$flags的值可以是(可以同时存在两个值):file_put_contents($file,$current,FILE_APPEND|LOCK_EX);//同时使用两个值

FILE_APPEND 如果文件filename已经存在,追加数据而不是覆盖。没有该值则是每次都把文件清空重写。

LOCK_EX 在写入时获得一个独占锁。

feof(resource $handle) 测试文件指针是否到了文件结束的位置

fwrite (resource $handle,string $string[,int $length]) 把 string 的内容写入文件指针 handle 处

如果指定了 length,当写入了 length 个字节或者写完了 string 以后,写入就会停止

rewind (resource $handle) 将 handle 的文件位置指针设为文件流的开头。

flock(resource $handle , int $operation) 轻便的咨询文件锁定

operation 可以是以下值之一:

LOCK_SH取得共享锁定(读取的程序)。

LOCK_EX 取得独占锁定(写入的程序。

LOCK_UN 释放锁定(无论共享或独占)。

ftruncate(resource $handle , int $size) 接受文件指针 handle 作为参数,并将文件大小截取为 size。

fclose(resource $handle) 关闭一个已打开的文件指针

copy (string $source,string $dest) 将文件从 source 拷贝到 dest

rename(string $oldname,string $newname) 重命名一个文件或目录(也可用于移动一个文件的位置)

unlink(string $filename) 删除文件

readfile(string $filename) 输出一个文件,读入一个文件并写入到输出缓冲

三、PHP中文件的调用

include($path)

当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。

include_once($path)如果该文件已经被包含过,则不会再次包含,其他跟include($path)作用一样

require($path)

和include($path)几乎完全一样,除了处理失败的方式不同之外。require在出错时产生致命错误并终止脚本运行。而include($path)只产生警告信息,脚本会继续运行。

require_once($path)

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。