PHP 文件处理
计算机文件或程序的目录 : directory
1.创建和修改 文件 与文件名 注意 不能直接删除 非空的文件夹
mkdir("./24"); 创建文件夹
rmdir("./24");//只能删除空的文件夹
var_dump(filetype("./22"));判断文件类型 文件夹 输出 dir 文件 返回 file
touch("./biji.txt"); 创建文件
unlink("./27/biju.txt"); 只能移除文件
var_dump(filetype("./biji.txt")); 判断文件类型 文件夹 输出 dir 文件 返回 file
2.rename 移动并重命名 两个缺一不可
rename("./23","./27");//移动并重命名文件 这里表示 移动到同一个 文件夹下 并且 重命名
rename("./kk","./27/ka");//移动并命名 只移动 不命名 不可以 (可以命名为原来的名字 kk);
copy("./biji.txt","./27/biju.txt");//只可以复制文件不能复制文件夹 同样 必须复制家命名(可以重命名)
3.glob 表示输出所有文件【以数组的形式返回】 这里注意 .. 和.
以下是双点和单点 在路径里面的区别
..表示上级目录 . 表示当前目录
var_dump(glob("./27/../*"));// 文件夹27的上级所有文件 重点
var_dump(glob("./27/./*"));//文件夹27下的所有文件 和 下面 效果一样
var_dump(glob("./27/*"));
4.content 包含
file_get_contents("./11.txt"); //获取文件内容
file_get_contents("http://www.baidu.com"); 也可以获取 远程文件
file_put_contents("./22.txt","dhsjkshdjksahj"); //写入内容
readfile("11.txt"); //读取文件内容并输出
file("./11.txt")); //读取文件内容,每行放在数组里面当做一个元素
5.打开文件:
1 $f = fopen("./11.txt","r"); //打开文件并返回文件资源 2 fwrite($f,"hello world"); //写入内容 3 4 echo fgetc($f); 5 echo fgetc($f); 6 echo fgetc($f); //读取文件内容,一个字符一个字符的读 7 echo fgets($f); 8 echo fgets($f); //读取文件内容,每次读一行 9 echo fread($f,10); //读取文件内容,按照长度来读 10 11 fclose($f); //关闭文件资源
6.文件处理
echo date("Y-m-d H:i:s",fileatime("./11.txt")); //获取文件上次访问时间 echo date("Y-m-d H:i:s",filectime("./11.txt")); //文件的创建时 echo date("Y-m-d H:i:s",filemtime("./11.txt")); //文件的修改时间 echo filesize("./11.txt"); //文件大小 var_dump(file_exists("./12.txt")); //文件是否存在
7.
echo $_SERVER['DOCUMENT_ROOT']; //获取当前服务器的根->D:/wamp/www/
echo basename("./11.txt",".txt"); //获取路径中的文件名->txt
echo basename("./11.txt"); //获取路径中的文件名->11.txt
echo dirname("./22/11.txt"); //获取路径中的除去文件名的部分---->./22[注意是获取路径上的 表示该文件之前的所有文件名如果]
var_dump(pathinfo("./22/11.txt")); //获取文件信息,返回数组
echo realpath("./22/11.txt"); //将相对路径转换为绝对路径-->D:\wamp\www\wenjianhemulu\22\rr.txt
readdir($dir)
使用readdir($dir) 必须 打开该文件 读取的是 该文件 内部的文件 名
$dir = opendir("./22");
var_dump(readdir($dir)); //读取文件内容并输出
closedir($dir);
$dir = opendir("./22"); var_dump(readdir($dir)); //读取文件内容并输出 var_dump(readdir($dir)); var_dump(readdir($dir)); closedir($dir);
例题:
递归的方法 打开文件(返回一个数组)--->关闭数组
1.获取文件夹下面所有文件的大小 【不能直接取文件夹的大小; 便利出所有文件 累加】 注意rewinddir($dir); 方法
1 function Fsize($fname) 2 { 3 $size = 0; 4 $dir = opendir($fname); 5 6 //遍历目录,找到文件,累加大小 7 while($u = readdir($dir)) 8 { 9 if($u=="." || $u=="..") 10 { 11 } 12 else 13 { 14 $zfname = $fname."/".$u; 15 if(is_file($zfname)) 16 { 17 $size += filesize($zfname); 18 } 19 } 20 } 21 22 //找到子目录,获取子目录下文件大小 23 rewinddir($dir); 24 while($u = readdir($dir)) 25 { 26 if($u=="." || $u=="..") 27 { 28 } 29 else 30 { 31 $zfname = $fname."/".$u; 32 if(is_dir($zfname)) 33 { 34 $size += Fsize($zfname); 35 } 36 } 37 } 38 39 closedir($dir); 40 return $size; 41 } 42 43 echo Fsize("./0904");
2.打开文件夹 后去里面所有资源
1 $fname = "./0904"; 2 $dir = opendir($fname); //打开一个目录,返回目录资源 3 4 while($url = readdir($dir)) 5 { 6 echo $fname."/".$url."<br>"; 7 } 8 closedir($dir); //关闭目录资源
3.遍历目录
var_dump(glob("./touxiang/*")); //返回目录下所有的文件 $attr = glob("./touxiang/*"); foreach($attr as $v) { echo $v."<br>"; }
4.删除文件
1 //删除文件夹 2 function ShanChu($fname) 3 { 4 //遍历该文件夹,找到所有文件删除 5 $dir = opendir($fname); 6 while($n = readdir($dir)) 7 { 8 if($n!="." && $n!="..") 9 { 10 $zname = $fname."/".$n; 11 if(is_file($zname)) 12 { 13 unlink($zname); 14 } 15 else 16 { 17 ShanChu($zname); 18 } 19 } 20 } 21 closedir($dir); 22 23 //删除文件夹 24 rmdir($fname); 25 } 26 27 ShanChu("./0904");