PHP文件和文件夹操作基础教程

平时编码的时候难免会涉及到一些文件夹,文件的操作,有幸PHP有丰富的函数,这里稍微做一下整理,算是温故知新。


关于文件夹的操作


字符串基本名称(字符串路径[,字符串后缀])
 

表示一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名具有后缀结束的,那一步部分也会被去掉。

在Windows中,斜线(/)和反斜线(\)都可以使用目录分隔符。在其他环境下是斜线(/)。

字符串目录名(字符串路径)

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

在Windows中,斜线(/)和反斜线(\)都可以使用目录分隔符。在其他环境下是斜线(/)。

数组pathinfo(字符串路径[,int options])

pathinfo()返回一个联合副本包含有path的信息。包括以下的数组单元:dirname,basename和extension。

可以通过参数options指定要返回的单元。它们包括:PATHINFO_DIRNAME,PATHINFO_BASENAME和PATHINFO_EXTENSION。

字符串realpath(字符串路径)

realpath()扩展所有的符号连接和处理输入的path中的’/./’,’/../’以及多余的’/’并返回规范化后的绝对路径名。返回的路径中没有符号连接, ‘/./’或’/../’η

realpath()失败时返回FALSE,某些说文件不存在的话。在BSD系统上,如果引用path不存在的话,PHP并不会像其他系统那样返回FALSE。


bool is_dir(字符串文件名)

如果文件名存在并且为目录则返回TRUE。如果filename是一个相对路径,则按照当前工作目录检查其相对路径。

注意:本函数的结果会被缓存。更多信息参见clearstatcache()。


资源opendir(字符串路径[,资源上下文])

:一个目录句柄,可用于之后的closeir(),readdir()和rewinddir()调用中。


字符串readdir(resource dir_handle)

返回目录中下一个文件的文件名。文件名以文件系统中的排序返回。


无效的closeir(resource dir_handle)

关闭由dir_handle指定的目录流。流必须之前被opendir()所打开。


无效的rewinddir(resource dir_handle)

将dir_handle指定的目录流重置到目录的开头。


数组glob(字符串模式[,int标志])

glob()函数遵循libc glob()函数使用的规则查找所有与模式匹配的文件路径,通常为shell所用的规则相同。不进行扩展或参数替代。

返回一个包含有匹配文件/目录的副本。如果出错返回FALSE。

有效标记为:

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

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

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

GLOB_NOESCAPE –反斜线不转义元字符

GLOB_BRACE –展开{a,b,c}来匹配’a’,’b’或’c’

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

注:在PHP 4.3.3版本之前GLOB_ONLYDIR在Windows或其他不使用GNU C库的系统上不可用。

GLOB_ERR –停止并读取错误信息(例如说不更改的目录),有时的情况下忽略所有错误

注:GLOB_ERR是PHP 5.1添加的。

一些代码:

/ **
*递归删除指定目录下的所有文件
*包括指定目录
* /
函数de_file($ path){
if(file_exists($ path)){
if(is_file($ path)){
if(unlink($ path) ){
$ show。=““ $ path \ r \ n”;
}
} else {
$ handle = opendir($ path);
while((($ file = readdir($ handle))!=”){
if((($ file!=”。”)&&($ file!=” ..”)&&($ file!=””)){
if(is_dir(“ $ path / $ file”)){
$ show。= del_file(“ $ path / $ file”);
} else {
if(unlink(“ $ path / $ file”))){
$ show。=““ $ path / $ file \ r \ n”;
}}
}
}
}
closeir($ handle);
if(rmdir($ path)){
$ show。=“ $ path \ r \ n”;
}
}
}
返回$ show;
}


嗯,没错,我们应该有随手关闭资源句柄的习惯。

文件的相关操作

数组文件(字符串文件名[,int use_include_path [,资源上下文]])
 

和readfile()一样,只除file()将文件作为一个副本返回。数组中的每个单元都是文件中相应的一行,包括换行符内部。如果失败file()返回FALSE。

如果也想在include_path中搜寻文件的话,可以将可选参数use_include_path设置为“ 1”。


资源fopen(字符串文件名,字符串模式[,bool use_include_path [,资源zcontext]])

如果文件名是“ scheme://…”的格式,则被当成一个URL,PHP将搜索协议处理器(也被称为封装协议)来如果该协议尚未注册封装协议,PHP将发出一条消息来帮助检查脚本中潜在的问题链接文件名当成一个普通的文件名继续执行下去。

如果PHP认为文件名指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是PHP可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或open_basedir替代应用进一步的限制。

如果PHP被认为是文件名指定的是一个已注册的协议,而该协议被注册为一个网络URL,PHP将检查并确认allow_url_fopen已被激活。如果关闭了,PHP将发出一个警告,而fopen的调用则失败。


字符串读取(int句柄,int长度)

该函数在读取完长度一个字节数,或到达EOF的时候,或(对于网络流)当一个包可用时就会停止读取文件,视乎先碰到某些情况。


int fwrite(资源句柄,字符串string [,int length])

如果指定了长度,当写入了长度一个字节或者写完了string以后,写入就会停止,视乎先碰到这种情况。

fwrite()返回写入的字符数,出现错误时则返回FALSE。

注意如果指定了长度参数,则magic_quotes_runtime配置选项将被忽略,而字符串中的斜线将不会被抽去。

注:在区分二进制文件和文本文件的系统上(如Windows):文件时,fopen()函数的模式参数要加上’b’。

字符串fgets(int handle [,int length])

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

错误时返回FALSE。

通常的缺陷:

习惯了C语言中fgets()语法的人应该注意EOF是怎样被返回的。

文件指针必须是有效的,并且必须指向一个由fopen()或fsockopen()成功打开的文件。


bool feof(资源句柄)

如果文件指针到了EOF或错误时则返回TRUE,否则返回一个错误(包括socket超时),其他情况则返回FALSE。

bool fclose(资源句柄)

将处理指向的文件关闭。

如果成功则返回TRUE,失败则返回FALSE。

文件指针必须有效,并且是通过fopen()或fsockopen()成功打开的。

默认图片
慕斯
文章: 203

订阅文章

在下面输入您的电子邮件地址以订阅我们的通讯

留下评论