文件系统处理

文件:文件和文件夹(目录)

  文件属性

echo filetype("./aa.txt");//获取文件类型;如果是文件返回file;如果是目录返回dir

echo is_dir("./test");  //判断给的路径是不是目录,返回bool型

is_file("./aa.txt");  //判断给定的路径是不是文件,返回bool型

echo date("Y-m-d H:i:s",fileatime("./aa.txt"));  //获取文件的上次访问时间(给出的是时间戳)

echo date("Y-m-d H:i:s",filectime("./aa.txt"));  //获取文件的创建时间(给出的是时间戳)

echo date("Y-m-d H:i:s",filemtime("./aa.txt"));  //获取文件的修改时间(给出的是时间戳)

echo filesize("./aa.txt");  //获取文件大小

echo file_exists("./aa.txt");   //判断文件是否存在,返回bool型

目录的基本操作

一、文件路径:

1.当前目录:./或不写
2.上级目录:../

3.下级目录:文件夹名/
4.根目录:/
4.1根目录/有两层意思:如果/是在php程序中,代表“硬盘目录”;如果/是在网页程序里,代表“www目录”

做文件(头像,产品目录)上传时,保存在数据的路径一般要写绝对路径

echo $_SERVER['DOCUMENT_ROOT'];  //取服务器www的根目录

echo basename("./aa.txt"); //从路径中获取文件名

echo basename("./aa.txt",".txt");  //返回没有后缀的文件名

echo dirname("./test/bb.txt");  //返回路径中的目录

var_dump(pathinfo("./test/bb.txt"));  //获取文件和目录的信息,以数组形势返回

echo realpath("./test/bb.txt");  //将相对路径转为绝对路径

二、遍历目录

  遍历目录方式一:glob()

var_dump(glob("./cutfruit/*"));  //返回cutfruit文件夹下所有的文件,数组形式

var_dump(glob("./cutfruit/*.js"));  //返回ueditor文件夹下js文件(筛选)

  

      练习一:获取文件夹下所有文件个数

//获取文件夹下所有文件个数
echo Shuliang("./cutfruit");

function Shuliang($filename)
{
	if(is_dir($filename))
	{
		$attr=glob($filename."/*");
		$sl=0;
		foreach($attr as $v)
		{
			if(is_dir($v))
			{
				$sl=$sl+Shuliang($v);
			}
			else
			{
				$sl++;
			}
		}
		return $sl;
	}
			
	else if(is_file($filename))
	{
		return 1;
	}
	
	else
	{
		return 0;
	}
}

  

     练习二:获取文件夹下所有文件的大小总和

//获取文件夹下所有文件的大小总和
echo Size("../0521");

function Size($filename)
{
	if(is_dir($filename))
	{
		$attr=glob($filename."/*");
		$size=0;
		foreach($attr as $v)
		{
			if(is_dir($v))
			{
				$size=$size+Size($v);
			}
			else
			{
				$size=$size+filesize($v);
			}
		}
		return $size;
	}
			
	else if(is_file($filename))
	{
		return filesize($filename);
	}
	
	else
	{
		return 0;
	}
}

 

    遍历目录方式二:opendir()打开指定的目录

                         readdir()读取指定的目录

                         rewinddir()重置目录指针,即将目录指针重置目录的开始处

                         closedir()关闭目录

 

//打开目录资源
$dir=opendir("./cutfruit");

echo readdir($dir),'<br>'; //读文件  .当前目录
echo readdir($dir),'<br>'; //读文件  ..上级目录
echo readdir($dir),'<br>'; //读文件  目录下的文件名

while($v=readdir($dir))
{
	if($v=="."||$v=="..")  //排除往上找文件
	{}
	else
	{
		echo $v."<br>";
	}
}

rewinddir($dir);//重置目录资源的指针

//关闭文件夹
closedir($dir);

  

  三、建立和删除目录

mkdir("./cc");//创建文件夹

rmdir("./cc");//删除目录,只能删除空文件夹

rename("./test","./cc/ts");  //重名民、移动文件夹

  

 

文件操作

 一、对文件的基本操作

  1.文件的基本操作

touch("./cc.txt");  //创建文件

copy("./cc.txt","../cc.txt");  //复制文件

unlink("../cc.txt");  //删除文件

  2.文件的读取、写入

echo file_get_contents("./cc.txt");//读取文件内容(word、excel文件除外)
echo file_get_contents("http://www.baidu.com"); //读取远程文件内容

file_put_contents("./cc.txt","你好,世界!  hello  world!"); //写入文件,并将以前的内容覆盖(word、excel文件除外)
file_put_contents("./cc.txt",file_get_contents("http://www.baidu.com"));  

  

readfile("./cc.txt");  //读取文件内容并且输出

var_dump(file("./cc.txt"));  //读取文件内容,返回数组,数组里面存储的是每一行

  

 二、对文件内容的基本操作

    1、文件的打开(只读模式)、读取

$fp=fopen("./cc.txt","r");  //打开文件,只读

/*echo fgetc($fp);  //读取文件内容,一个一个字符的读
echo fgetc($fp);
echo fgetc($fp);*/

while($v=fgetc($fp))
{
	echo $v;
}

echo fgets($fp);  //读取文件,一次读一行

echo fread($fp,4); //读取文件内容,可以设置读取长度

  2.文件的打开(只写模式)、写入

          模式一:写入内容,之前的内容会清空

 

$fp=fopen("./cc.txt","w");  //打开文件,只写

fwrite($fp,"asdfg");  //写入内容,之前的内容会清空

 

        

              模式一:写入内容,在文件内容后面追加写入

$fp=fopen("./cc.txt","a");  //打开文件,只写

fwrite($fp,"asdfg");  //写入内容,在文件后面追加写入

  

      3、文件的关闭

fclose($fp);//关闭文件

  

 

 

 

某个文件夹里的文件全部删除函数(慎用)

<?php
	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("./aa");

  

 

posted @ 2016-05-24 20:54  坏小子1993  阅读(140)  评论(0编辑  收藏  举报