zoukankan      html  css  js  c++  java
  • php最新学习-----文件的操作

    一、文件:文件和目录

    (1)判断文件的类型用:filetype()

    filetype("文件路径+文件名")  //判断文件的类型
    

    例如:我这里查找的的上一级目录中的json文件,输出看下结果(这些文件都是我盘中有的,可以是随便的一个文件)

    var_dump(filetype("../json"));  //上一级目录中的json文件
    

    (2)判断文件是不是目录用:is_dir()

    is_dir("文件路径+文件名")   //判断文件是不是目录
    

    例如:我这里查找的的当前目录中的11.txt文件,判断文件是不是目录,输出看下结果 

    var_dump(is_dir("./11.txt"));   //当前目录中的11.txt文件
    

      :返回的false说明这个不是目录

    (3)判断是不是文件用:is_file()

    is_file("路径+文件名")     //判断文件是不是文件
    

    例如:判断下这个文件是文件不?看下输出效果

    var_dump(is_file("./11.txt"));   //当前目录中的11.txt文件

    二、文件属性

    (1)获取文件上次的访问时间用:fileatime()

    fileatime("路径+文件名")   //获取文件上次的访问时间
    

    例如:我这里查找11.txt的文件,我先将文件的属性截图看下,后面的会用到这个属性框

    查看这个文档的上一次访问时间:

    echo date("Y-m-d H:i:s",fileatime("./11.txt"));   //用时间戳可以看得清楚时间,查的是当前目录下的11.txt文件
    

    查看下是不是属性框中,结果是一样的

    (2)获取文件的修改时间用:filectime()

    filectime("路径+文件名")     //获取文件的创建时间
    

    例如:查看11.txt文件的创建时间

    echo date("Y-m-d H:i:s",filectime("./11.txt")); 
    

    查看属性框中的创建时间是不是一样呢?

    (3)获取文件的修改时间用:filemtime()

    filemtime("路径+文件名")   //获取文件的修改时间
    

    例如:查看11.txt文件的修改时间 

    echo date("Y-m-d H:i:s",filemtime("./11.txt"));
    

     查看属性框中的修改时间是不是一样?

    (4)获取文件的大小用:filesize()  

    filesize("路径+文件名")   //获取文件的大小  

    例如:查看11.txt文件的大小

    echo filesize("./11.txt");  
    

    是不是和属性框中的文件大小是不是一样?

    (5)获取文件是否存在用:file_exists()

    file_exists("路径+文件名")   //获取文件是否存在
    

    例如:查看12.txt文件是否存在吧

    var_dump( file_exists("./12.txt"));
    

       这个文件是不存在的,多以是false,存在的话就是true

    三、文件路径

    文件路径以下几种:
    1 ./代表当前目录
    2 ../代表上一级目录
    3 /代表根目录
          (3.1)网页里面的根:代表www目录
          (3.2)php里面的根:代表磁盘目录

    下面看各种方法的用处:

    (1)获取当前服务器的根www

    $_SERVER['DOCUMENT_ROOT']   //获取当前服务器的根www
    

    直接输出看下

    (2)获取路径中的文件名

    basename("文件")   //一个参数:就是文件的路径
    

    例如:获取一个文件中的一个文件

    echo basename("./touxiang/test.php");   //touxiang文件中的test文件
    

    结果就是:文件名+后缀名

    (3)获取去掉后缀的文件名

    basename("文件",".后缀名")    //有两个参数:第一个是文件的路径,第二个就是去掉后缀名是什么
    

    例如:还是找一个文件中的一个文件

    echo basename("./touxiang/test.php",".php");
    

    结果就是:只有文件名

    (4)获取路径中除去文件名的部分

    dirname("文件")  //一个参数,正常的文件路径就可以
    

    例如:还是查找上面的那个文件

    echo dirname("../touxiang/test.php");
    

    结果就是没有文件名只剩下路径了

    (5)获取文件信息,返回数组

    pathinfo("文件名")
    

    例如:还是touxiang文件中的test文件

    var_dump(pathinfo("../touxiang/test.php"));

    (6)将相对路径转换成绝对路径

    realpath("文件")
    

    例如,当前文件中的一个文件

    echo realpath("./11.txt");
    

    四、遍历目录

    (1)返回目录下的所有文件 :glob()

    var_dump(glob("./touxiang/*"));  //文件,*代表所有
    

    文件中的文件都有显示:

     (2)循环遍历下这个文件夹

    $attr = glob("./touxiang/*");
    foreach($attr as $v)
    {
    	echo $v."<br>";
    }
    					
    

    输出下的结果

    例题::显示文件夹中的文件数量(包括子文件夹中的文件)

    找一下touxiang文件中的文件数量吧,一共是6个,两个文件,一个子文件,子文件中有3张图片,所以是六个文件

       

    function ShuLiang($fname)
    {
      $attr = glob($fname."/*");   //路径中的所有
      $n = count($attr);  //文件的总数
    				
      foreach($attr as $v)
      {
        if(is_dir($v)) //判断是否是文件
        {
    	  $n = $n+ShuLiang($v);  //是的话调用方法再继续加
        }
    					
      }	
      return $n;
    }
    echo ShuLiang("./touxiang");	
    

    输出的结果就是6

    (3)目录资源

    为了以后写方便,可以先定义一个文件目录

    $fname = "./touxiang";  //将touxiang文件定义
    

    打开目录资源:opendir()

    $dir = opendir($fname);
    

    有打开就会有关闭:closedir()

    将打开的目录遍历,得到目录中的文件

    while($url = readdir($dir))   //循环读取
    {
    	echo $fname."/".$url."<br>";   //路径拼上
    }
    			
    

    然后就是关闭目录资源

    closedir($dir); //关闭目录资源
    

    运行查看下结果

      在结果中出现了“.”和“..” 一定要注意,这是代表下一层和上一层目录

    例题::获取某一个目录下所有文件的大小

    这里还是获取touxiang文件夹的大小吧

    还是定义一个方法,然后是打开目录资源,相应的关闭目录资源,然后遍历目录找到文件,累计大小,肯定会有子目录,也要找到子目录的文件,结算子目录文件中的大小

    function Fsize($fname)
    {
    	$size = 0;
    	$dir = opendir($fname);
    				
    	//遍历目录,找到文件,累加大小
    	while($u = readdir($dir))
    	{
    		if($u=="." || $u=="..")  //判断,一定要有,如果没判断有这个磁盘的内容都没有了
    		{
    		}
    		else
    		{
    			$zfname = $fname."/".$u;
    			if(is_file($zfname))
    			{
    				$size += filesize($zfname);  //文件大小累计加
    			}
    		}
    	}
    				
    	//找到子目录,获取子目录下文件大小
    	rewinddir($dir);
    	while($u = readdir($dir))
    	{
    		if($u=="." || $u=="..")
    		{
    		}
    		else
    		{
    		  $zfname = $fname."/".$u;
    		  if(is_dir($zfname))
    		  {
    			$size += Fsize($zfname);  //调用方法继续加
    		  }
    	     }
    	}
    				
    	closedir($dir);
    	return $size;
    }
    			
    echo Fsize("./touxiang");
    

    得到的结果是:

    这个和文件的属性中的大小是一样的

    (4)创建一个新的文件夹(现在的文件夹内的内容)

    想要创建个新的文件夹

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

    文件中这样就创建了个文件夹:

    (5)有创建就有删除(把刚才创建的文件夹删除)

    注意:只能删除空的文件夹

    rmdir("./bb");   //删除文件夹(只能删除空的文件夹)
    

    这样刚才创建的文件已经删除了:

    (6)移动目录文件(我这里把名字也改成了aa)

    rename("./touxiang1","../aa")  //第一个参数是要移动的文件,第二个参数是移动到哪里,然后也可以改个名字
    

    文件已经移出来了: 

    五、文件整体操作

    touch("./22.txt"); //创建文件
    copy("./11.txt","../11.txt"); //复制文件
    unlink("../11.txt"); //删除文件
    echo file_get_contents("./11.txt"); //*获取本地文件内容
    echo file_get_contents("http://www.baidu.com");  //还可以获取远程文件内容
    readfile("11.txt"); //读取文件内容并输出
    var_dump(file("./11.txt")); //读取文件内容,每行放在数组里面当做一个元素
    

    六、文件内容操作

    $f = fopen("./11.txt","r"); //打开文件并返回文件资源:两个参数:可以选择打开模式:r只读,r+读写入,w写入新内容,并且清空原来的内容,a追加新内容
    fwrite($f,"hello world"); //写入内容
    
    echo fgetc($f);
    echo fgetc($f);
    echo fgetc($f); //读取文件内容,一个字符一个字符的读
    echo fgets($f);
    echo fgets($f); //读取文件内容,每次读一行
    echo fread($f,10); //读取文件内容,按照长度来读:两个参数,一个是文件,另一个是长度,可以控制读取
    
    fclose($f); //关闭文件资源
    

    例题:删除文件

    function ShanChu($fname)
    {
    	//遍历该文件夹,找到所有文件删除
    	$dir = opendir($fname);
    	while($n = readdir($dir))
    	{
    		if($n!="." && $n!="..")  //这是必须有的,不然这个磁盘上的内容群都会被删除
    		{
    			$zname = $fname."/".$n;
    			if(is_file($zname))
    			{
    			  unlink($zname);  //删除文件
    			}
    			else
    			{
    			  ShanChu($zname);  //如果有子文件夹也要删除,这里调用这个方法
    			}
    		}
    	}
    	closedir($dir);
    			
    	//删除文件夹
    	rmdir($fname);
    }
    			
    ShanChu("../aa");
    

    文件夹aa被删除了  

    文件的操作,到此结束~~~

  • 相关阅读:
    POJ2442 Sequence
    等式
    GYM101635E Ingredients
    单片机之PID算法
    信号完整性一
    C程序编程规范一
    FATFS文件系统的移植
    FreeRTOS移植到STM32上的移植过程
    codeblocks+SDCC开发51单片机
    java5种打印数组
  • 原文地址:https://www.cnblogs.com/nuanai/p/6287222.html
Copyright © 2011-2022 走看看