本帖最后由 小鲁哥哥 于 2017-12-13 11:40 编辑
【黑马程序员济南】PHP模块讲解之文件操作部分
在日常的开发工作中少不了要跟文件打交道,今天我们就来简单的介绍一下如何跟文件打交道
PHP 中提供给我们多种函数让我们可以对文件进行创建、读取、上传以及编辑文件等工作 首先先来接触创建目录函数mkdir() mkdir(目录地址, 权限模式,是否递归创建) 默认不能递归创建 [PHP] 纯文本查看 复制代码 <?php
/*黑马程序员济南中心出品*/
$path = './some/path/'; //some和path这两个文件夹都不存在
$result = mkdir($path);
var_dump($result); 结果: 会提示警告错误,告诉我们不能没有这样的文件或目录
第三个参数设置为true,表示,递归创建:
[PHP] 纯文本查看 复制代码 <?php
/*黑马程序员济南中心出品*/
$path = './some/path/'; //some和path这两个文件夹都不存在
$result = mkdir($path,0755,true);//0755这个是在Linux系统下的权限问题,我们在Windows开发可以忽略这些问题
var_dump($result);
这样的话结果就为true
删除,rmdir()
rmdir(目录地址) [PHP] 纯文本查看 复制代码 <?php
/*黑马程序员济南中心出品*/
$path = './some/path/'; //some和path这两个文件夹都存在
$result = rmdir($path);
var_dump($result);
结果为true
注意:不能删除非空目录! [PHP] 纯文本查看 复制代码 <?php
/*黑马程序员济南中心出品*/
$path = './some/path/'; //若path这个文件夹中还存在其他文件
$result = rmdir($path);
var_dump($result);
结果为: 会提示我们目录非空 删除失败
接下来是获得目录内容,opendir(),readdir(),closedir()获取目录中存在哪些文件。 句柄 = opendir(目录地址),打开一个目录句柄。 句柄,handle,一种程序与文件系统通讯的资源。 文件名 = readdir(句柄),读取目录中的一个文件名。 执行一次,仅可以读取一个文件名。同时向前移动目录指针! 配合循环结构: readdir,如果读取不到,则返回false,直接使用while即可: 通常,将 ., .. 处理掉! 即将while循环从新写一遍 [PHP] 纯文本查看 复制代码 <?php
/*黑马程序员济南中心出品*/
while($basename = readdir($handle)){
//过滤掉. ..
if($basename == '.'|| $basename == '..') continue;
echo $basename,'<br />';
}
代码写到这里还是有BUG的,当我的文件夹的名字为0的时候,while判断为false,会跳过这个文件夹 而实际的情况是0这个文件夹是要出现在最终结果的。
所以我们还要继续优化代码 [PHP] 纯文本查看 复制代码 <?php
/*黑马程序员济南中心出品*/
while(false !==$basename = readdir($handle)){
//过滤掉. ..
if($basename == '.'|| $basename == '..') continue;
echo $basename,'<br />';
}
代码写到这里,我们所需要的结果就会都出来了,但是作为一个严谨的程序员来说,我们还缺少一步 就是代码运行到这里我们的结果已经获取到了,但是打开的这个句柄还是在开启状态,资源还是占用的,还会继续浪费资源 所以我们还要优化:使用closedir(句柄)关闭目录句柄 最终的代码为: [PHP] 纯文本查看 复制代码 <?php
/*黑马程序员济南中心出品*/
$path = 'a/b/c';
$handle = opendir($path);
while(false !==$basename = readdir($handle)){
//过滤掉. ..
if($basename == '.'|| $basename == '..') continue;
echo $basename,'<br />';
}
closedir($handle); 、 到这里,我们的代码就结束了。 不知道大家对今天的讲的文件的操作理解的怎么样啊? 如果你想了解更多黑马课程请点击这里,如果你想加入黑马这个大家庭学习先进技术,广交天下好友! 黑马程序员济南中心联系电话:0531-55696830
|