PHP文件操作

Posted 格调evo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP文件操作相关的知识,希望对你有一定的参考价值。

文件操作
1.只能操作服务器的文件
2.文件包含目录和文件
判断文件类型
var_dump(filetype("../0626"));//返回文件类型 目录是dir 文件是file
var_dump(is_dir("../0626"));//判断路径是不是目录
var_dump(is_file("../ajax.php"));//判断路径是不是文件

文件属性
echo date("Y-m-d H:i:s",fileatime("../ajax.php"));//上次访问时间
echo date("Y-m-d H:i:s",filectime("../ajax.php"));//创建时间
echo date("Y-m-d H:i:s",filemtime("../ajax.php"));//修改时间
echo filesize("../ajax.php");//文件大小 字节为单位
var_dump(file_exists("../ajax.php"));//判断文件是否存在

文件路径
当前路径 ./ 上级目录 ../ 下级目录 目录/ 根路径 /
如果是php里面的根 / 路径代表:磁盘的根
如果是在网页里面的根 / 路径代表:服务器的根 www
var_dump(file_exists("/wamp/www/ajax.php"));
echo $_SERVER[‘DOCUMENT_ROOT‘];//取服务器的根路径
echo basename("../ajax.php");//从路径中获取带后缀的文件名
echo basename("../ajax.php",".php");//从路径中获取不带后缀的文件名
echo dirname("../ajax.php");//取路径中除去文件名的目录
var_dump(pathinfo("../0630/upload.php"));//返回目录信息 格式为数组
echo realpath("../0630/upload.php");//将相对路径转化为绝对路径

操作目录
var_dump(glob("../0627/*.php"));//获取目录下所有的文件* 某个后缀的*.php

/*$attr=glob("../0627/*");
for($i=0;$i<count($attr);$i++)
{
echo $attr[$i]."<br>";
}*/

获取目录下文件和文件夹数量如下 使用全局变量
/*$filenum=0;
$dirnum=0;
Num("../0627");
echo "文件数量为".$filenum."<br>";
echo "文件夹的数量为".$dirnum;
function Num($url)
{
global $filenum;
global $dirnum;
//判断给的路径是不是文件
if(is_file($url))
{
$filenum=1;
return $filenum;
exit;
}
//获取目录下所有的子文件
$attr=glob($url."/*");
//遍历所有的子文件
foreach($attr as $v)
{
if(is_file($v))
{
$filenum++;
}
else
{
$dirnum++;
Num($v);
}
}
echo "";
}*/

只求文件数量 不使用全局变量
/*echo Num("../0627");
function Num($url)
{
$filenum=0;
//判断给的路径是不是文件
if(is_file($url))
{
$filenum=1;
return $filenum;
exit;
}
//获取目录下所有的子文件
$attr=glob($url."/*");
//遍历所有的子文件
foreach($attr as $v)
{
if(is_file($v))
{
$filenum++;
}
else
{
$filenum=$filenum+Num($v);
}
}
return $filenum;
}*/

//计算文件夹大小
echo DirSize("../0627")."<br>";
function DirSize($url)
{
//定义变量存储文件大小
$size=0;
//判断给的路径是不是文件
if(is_file($url))
{
return filesize($url);
exit;
}
//如果是目录 取目录下的所有文件
$attr=glob($url."/*");
//遍历子文件
foreach($attr as $v)
{
if(is_file($v))
{
$size=$size+filesize($v);
}
else
{
$size=$size+DirSize($v);
}
}
return $size;
}

//使用目录资源遍历
$dir=opendir("../0627");//打开目录资源
//echo readdir($die);//读取目录下的文件 执行一次读一个
while($wj=readdir($dir))
{
echo $wj."<br>";
//if($wj=="." || $wj=="..")
}
closedir($dir);//关闭目录资源
rewinddir($dir);//将指针重置
使用readdir()读取的第一个和第二个内容
第一个是.代表当前目录
第二是..上级目录
在使用目录资源遍历文件夹时要注意将前两个排除if($wj=="." || $wj=="..")

目录操作
1.创建目录(文件夹)
//mkdir("./test");
2.删除目录(文件夹) 只能删除空的文件夹
//rmdir("./test");
3.移动目录(文件夹)<br />
//rename("./test","../test11");

文件整体操作
//touch("./test.txt");//创建文件
//copy("./test.txt","../test.txt");//复制文件
//unlink("./test.docx");//删除文件
//echo file_get_contents("./test.txt");//获取文件内容 txt 页面
//echo file_get_contents("http://www.baidu.com");//远程获取内容
//file_put_contents("./test.txt","hello");//向文件写入内容 会清空原有内容
//readfile("./test.txt");//获取文件内容 且直接输出
//var_dump(file("./test.txt"));//读取文件内容 返回数组,数组的每个元素对应的是一行

文件内容操作
1.打开文件资源
$fp=fopen("./test.txt","a");
操作文件
//echo fgetc($fp);//每次读一个字符
/*while(!feof($fp))//判断文件是否读到末尾
{
echo fgetc($fp);
}*/
//echo fgets($fp);//每次读一行
//echo fread($fp,10);//读取特定长度换行占2个字符
fwrite($fp,"hey kaka \r\nok");// \r\n换行

2.关闭文件资源
fclose($fp);

删除文件夹

<?php
	//删除文件夹(包括里面的所有文件)
	//  ./tp
	//  ./tp/Public
	function deldir($dirname) {
		if(!file_exists($dirname)) {
			die("文件夹不存在!");
		}
		//如果是文件,直接删除即可
		if(is_file($dirname)) {
			unlink($dirname);
			exit();
		}

		//打开目录资源
		$dir = opendir($dirname);

		while($filename = readdir($dir)) {
			if($filename !="." && $filename!="..") { //*******
				$filename = $dirname."/".$filename;

				if(is_dir($filename) ) {
					deldir($filename);
				}else {
					unlink($filename);
				}
			
			}
		}

		

		closedir($dir);
		rmdir($dirname);
	}


	deldir("./tp");

  重点内容如下:

var_dump(filetype("../0529")); //返回文件的类型:目录dir 文件file
var_dump(is_dir("../11.php")); //判断路径是不是目录
var_dump(is_file("../11.php")); //判断路径是不是文件

echo filesize("../11.php"); //文件大小,字节为单位
var_dump(file_exists("../12.php")); //判断文件是否存在

当前路径:./ 上级目录:../ 下级目录:目录/ 根路径:/
如果是php里面的根(/)路径代表:磁盘的根
如果是在网页里面的根(/)路径代表:服务器的根(www目录)

var_dump(pathinfo("../0529/aa.php")); //返回目录信息,格式为数组
echo realpath("../0529/aa.php"); //将相对路径转化为绝对路径

目录资源

1.创建目录(文件夹)
mkdir("./test");
2.删除目录(文件夹)只能删除空的文件夹
rmdir("./test");
3.移动目录(文件夹)
rename("./test","../test11");

touch("./test.txt");//创建文件
copy("./test.txt","../test.txt"); //复制文件
unlink("./test.docx"); //删除文件

echo file_get_contents("./test.txt"); //获取文件内容:txt 页面

文件资源

以上是关于PHP文件操作的主要内容,如果未能解决你的问题,请参考以下文章

php代码片段: sendFile/videoStream/sendEmail/phpexcel/ffmpeg/zip

VSCode自定义代码片段——git命令操作一个完整流程

超级有用的9个PHP代码片段

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode 如何操作用户自定义代码片段(快捷键)