先说一下基础知识:
文件位置如下图所示:
1、判断是文件还是目录
1var_dump(filetype("./aa/bb/cc.txt"));
输出: string(4) "file"
1var_dump(filetype("./aa"));
输出: string(3) "dir"
2、判断是否是文件(是返回ture)
1var_dump(is_file("./aa"));
输出bool(false)
3、判断是否是目录(是返回ture)
1var_dump(is_dir("./aa"));
输出: bool(true)
4、文件的访问、创建与修改时间
1
2
3
4
5echo date("Y-m-d H:i:s",fileatime("./aa"));//文件的上次访问时间
filectime("./aa.txt");//文件的创建时间
echo date("Y-m-d H:i:s",filemtime("./aa.txt"));//文件的修改时间
5、获取文件大小
1filesize("./aa.txt");
6、判断文件是否存在
1file_exists("./aa.txt")
7、服务器的根目录
1echo $_SERVER['DOCUMENT_ROOT'];
输出:D:/phpStudy/WWW
注意:/代表根,在网页里面代表www目录,在PHP里面代表磁盘根
8、路径
1
2
3
4echo basename("./aa/bb/cc.txt");//获取路径中的文件名
echo dirname("../0508/DB.class.php");//获取路径中的文件夹目录
var_dump(pathinfo("../0508/DB.class.php"));//获取路径信息
echo realpath("./aa/bb/cc.txt");//将相对路径转化成绝对路径
依次输出:
cc.txt
../0508
array(4) {
["dirname"]=>
string(7) "../0508"
["basename"]=>
string(12) "DB.class.php"
["extension"]=>
string(3) "php"
["filename"]=>
string(8) "DB.class"
}
D:\phpStudy\WWW\2017-05\0519\aa\bb\cc.txt
9.目录操作
1
2
3mkdir("./aa");//创建目录
rmdir("./aa");//删除目录,目录必须为空
rename("./test","../ceshi");//移动目录
第一种遍历目录:
1var_dump(glob("./aa/bb/*.txt"));//获取目录下所有文件
输出:
array(6) {
[0]=>
string(14) "./aa/bb/cc.txt"
[1]=>
string(14) "./aa/bb/dd.txt"
[2]=>
string(14) "./aa/bb/ee.txt"
[3]=>
string(14) "./aa/bb/ff.txt"
[4]=>
string(14) "./aa/bb/gg.txt"
[5]=>
string(14) "./aa/bb/hh.txt"
}
第二种遍历目录:(重要)
1
2
3
4
5
6
7
8
9
10
11
12//打开目录,返回目录资源
$dname ="./aa/bb";
$dir = opendir($dname);
//从目录资源里面读文件,每次读一个
while($fname = readdir($dir))
{
echo $dname."/".$fname."
";
}
//关闭目录资源
closedir($dir);
输出:
./aa/bb/.
./aa/bb/..
./aa/bb/cc.txt
./aa/bb/dd.txt
./aa/bb/ee.txt
./aa/bb/ff.txt
./aa/bb/gg.txt
./aa/bb/hh.txt
10、文件整体操作
1
2
3touch("./aa.txt");//创建文件
copy("./aa.txt","../aa.txt");//复制文件
unlink("./aa.txt");//删除文件
11、文件内容操作
1
2
3
4echo file_get_contents("http://www.baidu.com"); //读取文件
file_put_contents("./aa/bb/hh.txt","hello");//写内容
readfile("./11.txt");//读取并输出
var_dump(file("11.txt"));//读取文件内容,返回数组,每行是一个元素
1
2
3
4
5
6
7//打开文件
$f =fopen("./11.txt","a");
//打开文件并写入
fwrite($f,"wwwww");
//关闭文件
fclose($f);
其中:r只读;r+读写;w写清空;w+读写;a写入文件末尾;a+读写;x创建并以写入打开;x+创建并以读写打开;加一个b代表可操作二进制文件(建议加)
利用遍历来计算文件夹下所有的个数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44<?php
echo fileCount("./qiyezhan");
function fileCount($fname)
{
//该文件夹下所有文件数量
$sum = 0;
//判断给的是不是文件夹
if(is_dir($fname))
{
//打开文件夹
$dir = opendir($fname);
while($wenjian = readdir($dir))
{
if($wenjian!="." &&$wenjian!="..")
{
//文件的完整路径
$furl =$fname."/".$wenjian;
if(is_file($furl))
{
$sum++;
}
else if(is_dir($furl))
{
//获取该文件夹下文件数量,累加
$sum =$sum + fileCount($furl);
}
}
}
//关闭文件夹
closedir($dir);
return $sum;
}
else
{
echo "给的文件夹不对";
}
}
?>
利用遍历删除全部文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37<?php
ShanChu("./qiyezhan");
function ShanChu($fname)
{
if(is_dir($fname))
{
//在删除之前,把里面的文件全部删掉
$dir = opendir($fname);
while($dname = readdir($dir))
{
//必须加这一项,不然可能会将整个磁盘给删掉
if($dname!="." &&$dname!="..")
{
$durl =$fname."/".$dname;
if(is_file($durl))
{
unlink($durl);
}
else
{
ShanChu($durl);
}
}
}
closedir($dir);
//删除该文件夹
rmdir($fname);
}
else
{
//如果是文件,直接删掉
unlink($fname);
}
}
?>