名人之声
发现可能性的界限的唯一办法就是越过这个界限,到不可能中去。
——阿瑟·克拉克
上一节我们讲了在PHP中操作文件,但假设我们需要按日期创建日志目录,按用户创建上传图片等,我们是不是得先建立分类目录呢?在实际的开发过程中,操作目录也是我们需要掌握的。今天就来说说PHP中目录的处理。
1 创建目录
在PHP中创建目录,使用的函数是 mkdir(),如下为函数的语法格式:
bool mkdir(string pathname);
如下创建一个名为images的图片目录,成功返回true,否则返回false:
<?php
if(file_exists("images")){
echo "目录已经存在";
} else
mkdir("images");
echo "目录创建成功"
?>
浏览器下运行显示:目录创建成功。在我们的项目目录下也可以看到生成了images 目录。
2 打开目录
写入文件的前提我们要打开文件,同理,在目录中存入文件,前提也要打开目录。
在PHP中,打开目录使用的函数是opendir()函数,如下函数的语法格式:
resource opendir(string path);
path需要是一个合法(存在的)的目录路径,成功返回目录的指针,如果不合法,会返回错误信息。如下代码示例:
<?php
$images_dir="images";
if(is_dir($images_dir)) //检测是否是一个合法的目录
if($dir=opendir($images_dir)) //打开目录
echo $dir; //输出目录指针
closedir($dir); //关闭目录
?>
浏览器下运行,返回目录的指针:
3 读取目录
打开目录后,我们就可以读取目录中的数据。在PHP中,读取目录的数据使用函数readdir()函数,如下函数的语法格式:
string readdir(resource dir_handle);
dir_handle为使用opendir()函数打开一个目录返回的目录指针。函数返回目录中下一个文件名,文件名以在目录中的顺序返回。读取失败则返回false。如下代码示例:
<?php
$f_open="images";
$i=0;
if(is_dir($f_open)){ //检测是否是一个合法的目录
if($dir=opendir($f_open)){ //打开目录
while($con=readdir($dir)){//读取目录
$i++;
echo "$i:$con<br>"; //输出目录中的内容
}
}
}
closedir($dir);
?>
浏览器下运行结果如下:由于我们上面例子创建的images目录还是空的文件,所以有如下显示。“.”代表当前目录,“..”代表上一层目录。
4 删除目录
删除目录,在PHP中使用函数is_dir()函数和rmdir()这两个函数来实现,前者判断要删除的目录是否为目录,如果是,则可以使用rmdir()函数来删除,否则提示“删除目录失败”。删除成功返回true,否则返回false。其语法格式如下:
bool rmdir(string dirname);
dirname为要删除的目录,这里有个注意点,删除目录的前提是删除的目录要为空目录。我们来试试上面创建的images目录,示例代码如下:
<?php
if(!file_exists("images"))
echo "目录已经删除了";
else
rmdir("images");
echo "目录删除了";
?>
浏览器下运行结果:项目目录中发现images目录也已经不存在了。
5 改变目录
改变目录,意思是在已经打开的目录中,要转移到另一个目录去。在PHP中,这个操作可以使用函数chdir()函数来实现。如下函数的语法格式:
bool chdir(string directory);
directory要跳转的目录,成功执行返回true,负责返回false。我们在目录中创建两个目录,images和css。示例代码如下:
<?php
$images="images";
$dir=opendir($images);
echo $dir;
closedir($dir); //关闭目录
$dir=chdir("css");
echo "<br/>$dir";
?>
浏览器运行结构:目录已经改变
6 关闭目录
正如关闭文件,防止占用资源,同理,对于目录,使用目录完毕,也应该要及时关闭目录。在PHP中,关闭目录使用的函数是 closedir()函数,如下函数语法格式:
void closedir(resource dir_handle);
dir_handle为使用opendir()函数打开一个目录返回的目录指针。如下示例代码:
<?php
$images="images";
$shi=opendir($images); //打开文件
//.......... //对文件进行操作
closedir($shi); // 关闭目录
echo "关闭目录完成"
?>
浏览器下运行结果:
以上就是目录处理的整个过程,会使用到的操作函数。这节就介绍打这里咯。