又是一堆函数。
PHP具有文件夹和文件的处理能力
对文件夹的处理包括:创建、删除、复制 、移动、重命名、修改权限等目录操作。
对文件的处理包括:创建、打开、写入、关闭、删除文件。
存在性检测
判断是否是一个目录1
2is_dir($dirpath);
#返回值:如果是目录返回true,否则返回false
判断文件类型1
2filetype($path);
#返回值:如果是文件返回file,如果是目录返回dir
判断文件目录是否存在1
2is_exists($path);
#返回值:如果存在返回true不存在返回false
创建目录
1 | bool mkdir($pathname,$mode,$recursive); |
判断当前文件夹下是否有images目录,并试图创建
1 |
|
目录的其他操作
删除目录
只能删除空的目录1
2
3
4
5
6$dir = './images';
if(rmdir($dir)){
echo "删除成功";
}else{
echo "删除失败";
}
如果目录不为空怎么删除呢? 点我
更改目录的访问权限1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17//获取目录或文件权限
$dir = './images';
$px = fileperms($dir);
//得到的是int类型(十进制)的权限值,需要把$px转八进制(decoct)
$px = decoct($px);
echo "{$dir}的权限为{$px}";
//修改权限
chmod($path,$mode);
/*
参数说明
$path 将要修改问目录或是文件名
$mode设置访问权限的值,必须是一个八进制的整数值。如:0777、0644、0600、0444
参数包含三个八进制数按顺序分别指定了所有者、所有者所在的组以及所有人的访问限制。
每一部分都可以通过加入所需的权限来计算出所要的权限。数字 1 表示使文件可执行,数字
2 表示使文件可写,数字 4 表示使文件可读。加入这些数字来制定所需要的权限。
注意:在 windows 系统下,将忽略它。只有在 linux、unix 系统下才真正有效果
*/
目录重命名或移动目录(适用于文件)1
2
3
4$oldDir = './images';
$newDir = '../images';
var_dump(rename($oldDir,$newDir));
#不同目录相当于移动目录
打开目录 opendir()1
2
3$dir = './images';
$stm = opendir($dir);
#如果成功返回目录句柄 失败返回false
读取目录中的条目1
2
3$dir = './images';
$line = readdir($dir);
#每次从目录中读取一个文件名,并下移文件指针
显示中文目录或文件1
2
3
4
5
6
7iconv ( string $in_charset , string $out_charset , string $str )
/*
参数说明
$in_charset 输入字符集
$out_charset 输出字符集
$str 原始字符串
*/
示例1
2
3
4
5
6
7
8
9
10$dir = './images';
//打开目录
$handle = opendir($dir);
//循环读取目录句柄中的条目
where($line = readdir($handle)){
//将操作系统的字符集gbk,转成网页字符集utf-8
echo iconv('gbk','utf-8',$line).'<br>';
}
//关闭句柄
closedir($handle);
递归遍历所以子目录和文件
1 |
|
PHP 操作文件
打开文件1
2
3
4
5
6$handle = fopen($filename,$mode);
/*
$filename 打开文件的名称
$mode 打开方式
*/
关闭文件1
fclose($handle);
获取文件大小1
$size = filesize($filename);
示例读取一张图片1
2
3
4
5
6
7
8
9
//生命页面字符集:为图片类型
header("content-type:image/jpeg");
$filename = './images/1.jpg';
//打开文件以只读的方式打开
$handle = fopen($filename,'rd');
//读取文件的所以数据
$str = fread($handle,filesize($filename));
echo ($str);
把整个文件读入数组1
$arr = file($path);
二进制的数据,不适合使用 file()函数来读取
把文件内容读入字符串(不用打开) file_get_contents()1
2$path = './images/test.txt';
$str = file_get_contents($path);
写入文件内容1
2
3
4
5
6fwrite($handle,$string, $length );
/*
$handle 文件句柄;
$string 写入的内容
$length 写入的字符长度
*/
将字符串写入文件(不用打开) file_put_contents()1
2
3$str = 'Hello World';
$path = './a.html';
file_put_contents($path,$str);
拷贝文件 copy()1
bool copy ('源文件','目标文件' );
1 |
|
删除文件1
2@unlink($filename);
//一般会加上错误抑制符
其它文件操作函数
is_writable()判断文件是否可写;
is_readable()判断文件是否可读;
feof()判断文件指针是否到达文件结尾
filectime()获取文件创建的时间戳
fileatime()获取文件最后访问的时间戳
filemtime()获取文件修改的时间戳
递归删除所有目录下的文件及目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function delAllFile($dir){
//打开目录
$handle = opendir($dir);
while($lineDir = readdir($handle)){
//过滤'.'(当前文件夹)'..'(上级文件夹)
if($lineDir == '.' || $lineDir == '..') continue;
if(is_dir($dir.'/'.$lineDir)){
//如果是,继续调用当前函数
delAllFile($dir.'/'.$lineDir);
}else{
//否则删除
@unlink($dir.'/'.$lineDir)
}
}
//关闭目录
colsedir($handle);
//删除当前空目录
rmdir($dir);
}
$dir = './images';
delAllFile($dir);