PHP目录处理

目录也是文件,是一种特殊的文件。要浏览目录下的文件,首先也要打开目录,浏览完毕后,同样要关闭目录。就这点说,两者没有什么分别,都要经过3步,即打开目录、浏览目录和关闭目录。

打开目录

打开目录和打开文件类似,但打开的文件如果不存在,在自动创建一个新文件;而打开的目录如果不正确,则一定会报错。

在PHP中使用opendir()函数打开目录。语法如下:

resource opendir(string path)

参数path是一个合法的目录零,成功执行后返回目录的指针;如果path不是有个合法的目录或者因为权限、文件系统错误而不能打开目录,opendir()函数将返回false,并产生一个E_WARNING级别的错误信息。可以在opendir()前面加上个"@"符号来抑制错误信息的输出。

浏览目录

在PHP中浏览目录中的文件使用的是scandir()函数。语法如下:

array scandir(string directory[,int sorting_order])

该函数返回一个数组,包含directory中的所有文件和目录。参数sorting_order指定排列顺序,默认按字母升序排列,如果应用参数sorting_order,则变为降序排列。

例如:

浏览根目录下的所有文件

$path="../test";
if( is_dir($path) ) {
$dir=scandir($path);
foreach ($dir as $value) {
echo $value."<br>";
    }
}else{
echo "目录路径错误";
}

运行结果为:

.

..

.idea

15-test

CSDN

count.txt

index1.php

num

phpyudingyichangliang.php

test.js

test.php

test.txt

upfile

操作目录

因为目录是特殊的文件,所以对文件的操作处理函数(如重命名等)一般也试用与目录。PHP也为目录本身提供了一些特殊的操作函数。

下表列出了一些常用的目录操作函数:


函数原型

函数说明

举例

bool mkdir(string pathname)
新建一个指定的目录
mkdir("temp")
bool rmdir(string dirname)
删除所指定的目录,该目录必须是空的
rmdir("temp")

string getcwd(void)
获取当前工作的目录
getcwd()

bool chdir(string directory)
改变当前目录为diretory
echo getcwd().‘<br>‘;

chdir(‘../‘);

echo getcwd().‘<br>‘;


float disk_free_space(string directory)

返回目录中可用空间(bytes)。

被检查的文件必须通过服务器的文件系统。


disk_free_space(‘D:\\wampserver‘);

float disk_total_space(string directory)

返回目录的总空间大小(bytes)

disk_total_space(‘D:\\wampserver‘);

string readdir(resource handle)

返回目录中下一个文件的文件名(使用此函数时,目录必须是使用opendir()函数打开的)在PHP5之前,都是使用这个函数来浏览目录的

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

echo $pah;

}


void rewinddir(resource handle)

将指定的目录重新指到目录的开头

rewinddir($handle)

关闭目录

PHP中通过closedir()函数关闭目录。语法如下

void closedir(resource handle)

参数handle为使用opendir()函数打开的一个目录所返回的目录指针

例如,下面是一个打开和关闭目录的流程代码:

$path="../";
if(is_dir($path)){
if($dire=opendir($path))
echo $dire;
}else{
echo "路径错误";
exit();
}
//....  //其他操作

closedir($dire);
运行结果为:
Resource id #2
注:is_dir()函数用于判断当前路径是否是一个合法的目录。如果合法,返回true,否则返回false。
时间: 2024-11-05 12:34:37

PHP目录处理的相关文章

Day4 - 迭代器&amp;生成器、装饰器、Json &amp; pickle 数据序列化、软件目录结构规范

---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 需求:列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求把列表里的每个值加1 1 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2 b = [] 3 for i in a: 4 b.append(i+1) 5 a = b 6 print(a) 普通青

maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理

maven依赖本地非repository中的jar包 http://www.cnblogs.com/piaolingxue/archive/2011/10/12/2208871.html 博客分类: MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary导入. 在eclipse中开发没有问题,但是使用maven编译插件开始便宜总是报找不到WEB-INF

PHP拷贝目录下的所有文件

//目录拷贝函数到任意目录function dir1($filename,$dest){ static $dirname; $dirname.=$dest; //连接头(第一层目录) static $dir; //中间变量 if(file_exists($filename)){ //如果文件存在 if(is_dir($filename)){ //如果是目录,则先创建目录然后遍历 $dirnames=basename($filename); //取最后的目录或者文件名,链接到要转移到的第一层目录

Python 读取某个目录下的文件

读取某个目录下的文件,如'/Users/test/test_kmls'目录下有test1.txt.test2.txt. 第一种方法读出的all_files是test1.txt.test2.txt 1 import os 2 3 kml_path=os.path.abspath('/Users/test/test_kmls') 4 all_files=os.listdir(kml_path) 5 for file in all_files: 6 print file 第二种方法可以获得文件的全路径

samba共享目录构建wordpress与mysql

项目一 (1) 使用samba共享/data/application/web,在目录中提供wordpress; (2) 使用samba客户端挂载samba server共享的目录至/var/www/html: (3) 客户端(lamp),部署wordpress,并让其正常访问:要确保能正常发文章,上传图片: (4) 客户端2(lamp),挂载samba server共享的目录至/var/www/html:验正其wordpress是否可被访   问:要确保能正常发文章,上传图片: samba服务器

Linux使用find查找最后修改时间超过三天的文件并移动到指定目录

使用场景:应用程序,如tomcat,每天都会生成新的日志文件,时间一长,占用大量的磁盘,需要定期清理这些文件. 代码如下: find /tomcat/logs/*.log -ctime +3 -exec mv {} /tmp 也可以使用xargs传参数 find /tomcat/logs/*.log -ctime +3 | xargs mv {} /tmp 说明:将指定目录下超过3天未修改的日志文件移动到tmp中. 如果要直接删除,将命令改为如下即可: find /tomcat/logs/*.l

linux命令格式,获取帮助及其目录结构简要理解

我们都知道,一台计算机要是没通电,和一堆废铁没什么区别.那么,通电开机进入系统后,会进入交互界面,等待用户操作,人与计算机交互界面有两种: GUI:图形用户接口.如我们平时使用的Windows  ,linux的X window,有KDE和GOME. CLI:命令行接口,使用的SHELL类型有bash ,csh,tcshell,zshell等. 例如:[[email protected] ~]# commandbin root:当前登录的用户名. dxlcentOS:当前主机的主机名.@是一个分隔

微信支付授权目录填写规则

微信内使用微信支付有时会遇到如下错误: 当前页面的url未注册http://xxx 这是因为当前支付页所在的公众号没有认证并开通微信支付,如果开通了那就需要到公众号后台配置下支付授权目录 点击支付授权目录的修改 注意到第三点: 3.头部要包含http或https,须细化到二级或三级目录,以左斜杠"/"结尾 这里非常容易误解.很有可能是这是错误的文案,微信没有及时更新说明文案. 经过实际测试后发现,第三条的意思是支付授权目录应该为当前页面链接的上一级目录 比如 访问url为:http:/

vmware 下安装的linux误删bin目录恢复成功(全过程)避开各种坑

加载上系统安装iso镜像,设置光驱启动,在vmware菜单栏里点击,虚拟机-电源-打开电源时进入固件. 进入系统救援模式(选第3个选项)网卡需要配置上ip不然无法访问ftp服务器,注意:IP后面的通配符一般写24,进入后提示符为 bash-4.1# bash-4.1# cd /mnt/sysimage 目录下. 打包其他正常启动linux机器(系统版本要相同)上的bin文件,要打包成.tar格式(windows系统下可以安装 7ZIP 进行打包,linux系统下用 tar cvf bin.tar

设计一个程序能够将某一个目录下面的所有文件名打印出来---File类的使用

,设计一个程序能够将某一个目录下面的所有文件名打印出来 运用到的方法有:返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录:list()           测试此抽象路径名表示的文件是否是一个目录:isDirectory()           返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件:listFiles() package printfilename; import java.io.File; public class PrintFileNam