有一个php文件存放在D,【文件/文件夹操作】php文件夹/文件目录操作函数

转载:http://www.php100.com/html/php/hanshu/2013/0905/4370.html

1. php文件夹操作函数

string basename(string path[,string suffix])

给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。

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

例子:

php

$path="/testweb/home.php";

//显示带有文件扩展名的文件名

echo basename($path);

//显示不带有文件扩展名的文件名

echo basename($path,".php");

?>

输出:

home.php

home

string dirname(string path)

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

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

array pathinfo(string path[,intoptions])

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

可以通过参数 options 指定要返回哪些单元。它们包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和 PATHINFO_EXTENSION。默认是返回全部的单元。

array scandir(string$directory[,int$sorting_order[,resource $context]])

scandir, 列出指定路径中的文件和目录,返回一个 array,包含有 directory 中的文件和目录。成功则返回包含有文件名的 array,如果失败则返回 FALSE。如果 directory 不是个目录,则返回布尔值 FALSE 并生成一条 E_WARNING 级的错误。

例子:

php

$dir='/tmp';

$files1=scandir($dir);

$files2=scandir($dir,1);

print_r($files1);

print_r($files2);

?>

输出:

Array

(

[0]=>.

[1]=>..

[2]=>bar.php

[3]=>foo.txt

[4]=>somedir

)

Array

(

[0]=>somedir

[1]=>foo.txt

[2]=>bar.php

[3]=>..

[4]=>.

)

string realpath(string path)

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

realpath() 失败时返回 FALSE,比如说文件不存在的话。在 BSD 系统上,如果仅仅是 path 不存在的话,PHP 并不会像其它系统那样返回 FALSE。

boolis_dir(string filename)

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

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

resource opendir(string path[,resource context])

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

string readdir(resource dir_handle)

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

voidclosedir(resource dir_handle)

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

voidrewinddir(resource dir_handle)

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

array glob(string pattern[,intflags])

glob() 函数依照 libc glob() 函数使用的规则寻找所有与 pattern 匹配的文件路径,类似于一般 shells 所用的规则一样。不进行缩写扩展或参数替代。

返回一个包含有匹配文件/目录的数组。如果出错返回 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 添加的。

2. php文件目录操作

a. 新建文件

1、先确定要写入文件的内容

$content='你好';

2、打开这个文件(系统会自动建立这个空文件)

//假设新建的文件叫file.txt,而且在上级目录下。w表示‘写文件’,$fp下面要用到,表示指向某个打开的文件。

$fp=fopen('../file.txt','w');

3、将内容字符串写入文件

//$fp告诉系统要写入的文件,写入的内容是$content

fwrite($fp,$content);

4、关闭文件

fclose($fp);

注意:PHP5中提供了更方便的函数file_put_contents,上面的4步可以这样完成:

$content='你好';

file_put_contents('file.txt',$content);

b. 删除文件

删除当前目录下的arch目录下的文件abc.txt

unlink('arch/abc.txt');

注意:系统会返回操作结果,成功则返回 TRUE,失败则返回 FALSE,可以用变量接收,就知道是否删除成功:

$deleteResult=unlink('arch/abc.txt');

c. 获取文件内容

假设获取的目标文件名是file.txt,而且在上级目录下。获取的内容放入$content。

$content=file_get_contents('../file.txt');

d. 修改文件内容

操作方法与新建内容基本一样

e. 重命名文件或目录

将当前目录下的子目录a下面的文件1.gif重命名为2.gif。

rename('/a/1.gif','/a/2.gif');

注意:对目录也一样。系统会返回操作结果,成功则返回 TRUE,失败则返回 FALSE,可以用变量接收,就知道是否重命名成功。

$renameResult=rename('/a/1.gif','/a/2.gif');

如果要移动文件或目录,只要将重命名后的路径设置为新的路径就可以了:

将当前目录下的子目录a下面的文件1.gif,移动到当前目录下的子目录b,并且重命名为2.gif。

rename('/a/1.gif','/b/2.gif');

不过要注意,如果目录b不存在,就会移动失败。

f. 复制文件

将当前目录下的子目录a下面的文件1.gif,复制到当前目录下的子目录b,并命名为2.gif。

copy('/a/1.gif','/b/1.gif');

注意:不能对目录进行此项操作。

如果目标文件(上面的/b/1.gif)已经存在,原来的文件将被覆盖。

系统会返回操作结果,成功则返回 TRUE,失败则返回 FALSE,可以用变量接收,就知道是否复制成功。

$copyResult=copy('/a/1.gif','/b/1.gif');

g. 移动文件或目录

操作方法和重命名一样

h. 文件或目录是否存在

检查上级目录下的文件logo.jpg是否存在。

$existResult=file_exists('../logo.jpg');

注意:如果文件存在系统返回true,否则返回false。可以对目录进行同样的操作。

i. 获取文件大小

获取上级目录下的文件logo.png的大小。

$size=filesize('../logo.png');

注意:系统会返回一个数字,表示文件的大小是多少字节(bytes)。

j. 新建目录

在当前目录下的目录a下面新建目录b。

mkdir('/a/b');

注意:系统会返回操作结果,成功则返回 TRUE,失败则返回 FALSE,可以用变量接收,就知道是否新建成功:

$mkResult=mkdir('/a/b');

k. 删除目录

删除当前目录下的目录a下面的子目录b。

rmdir('/a/b');

注意:只能删除非空的目录,否则必须先删除目录下的子目录和文件,再删除总目录

系统会返回操作结果,成功则返回 TRUE,失败则返回 FALSE,可以用变量接收,就知道是否删除成功:

$deleteResult=rmdir('/a/b');

l. 获取目录中的所有文件名

1、先打开要操作的目录,并用一个变量指向它

打开当前目录下的目录pic下的子目录common。

$handler=opendir('pic/common');

2、循环的读取目录下的所有文件

while(($filename=readdir($handler))!==false){

//3、目录下都会有两个文件,名字为'.'和‘..’,不要对他们进行操作

if($filename!="."&&$filename!=".."){

//4、进行处理

//这里简单的用echo来输出文件名

echo $filename;

}

}

注意:其中$filename = readdir($handler)是每次循环的时候将读取的文件名赋值给$filename,为了不陷于死循环,所以还要让$filename !== false。一定要用!==,因为如果某个文件名如果叫'0',或者某些被系统认为是代表false,用!=就会停止循环

5、关闭目录

closedir($handler);

完整代码:

/**

* 返回一个文件夹下的所有文件,包括子文件夹内的文件。

* @param string $dir 路径

* @return array

*/

functionscan_dir($dir)

{

$files=array();

if(is_dir($dir)){

if($handle=opendir($dir)){

while(($file=readdir($handle))!==false){

if($file!="."&&$file!=".."){

if(is_dir($dir."/".$file)){

$files[$file]=scan_dir($dir."/".$file);

}else{

$files[]=$dir."/".$file;

}

}

}

closedir($handle);

return$files;

}

}

}

m. 对象是否是目录

检查上级目录下的目标对象logo.jpg是否是目录。

$checkResult=is_dir('../logo.jpg');

注意:如果目标对象是目录系统返回true,否则返回false。上面例子的$checkResult当然是false。

n. 对象是否是文件

检查上级目录下的目标对象logo.jpg是否是文件。

$checkResult=is_file('../logo.jpg');

注意:如果目标对象是文件,系统返回true,否则返回false。上面例子的$checkResult当然是true。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值