php的文件操作以及目录浏览

1.目录的操作

 

首先是从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出

 

<?php

$base_dir=”filelist/” ;    //定义需要操作的文件

$fso=opendir($base_dir) ;  //使用opendir打开对应路径,并返回对应的资源类型

Echo $base_dir.”<br />”;   //进行输出查看

While($flist=readdir($fso))

{

   Echo $flist.”<br />”

}

Closedir($fso);     //防止内存的溢出,最后需要进行关闭

?>

 

有时间需要知道目录的信息,可以使用dirname($path)basename($path),分别返回路径的目录部分和文件的名称部分,可用disk_free_space($path)返回查看文件剩余的空间。

 

创建文件夹命令:

 

Mkdir($path,0777):     0777是文件创建时候的权限,这个命令仅仅适用于unix系统

 

Rmdir($path);         删除路径为$path的文件

 

2.关于文件的操作

 

2.1 新建文件

  

首先。要求确定你所要新建文件所在目录权限,建议设置为0777.然后,新建文件的名称建议适用绝对路径

 

<?php

$filename=”text.txt”;

 

$fp=fopen(“$filename”,”w+”);

 

If(!is_writable($filename))

{

   Die(“文件:”.filename.”不可写,请检查!”);

}

 

Fwrite($filename,”anything you want to write to $filename”);

 

Fclose($fp);  //关闭内存的暂用

 

?>

 

2.2读取文件

 

  首先要确定文件是否拥有读取的权限(或则读取的文件是否存在),我们可以用is_readable函数获取信息;

 

<?php

 

$file=”dirlist.php”;

If(is_readable($file)==false)

{

    Die(“文件不存在或则无法读取”);

}else{

    Echo “存在”;

}

 

判断文件存在的函数还有file_exists(),但是这个显然我is_readable全面,当一个文件存在的话 可以用

<?php

  $file=”filelist.php”;

If(file_exists($file)==false)

{

  Die(“文件不存在”);

}

$data=file_get_contents($file);

Echo htmllentities($data);             //需要测试这个函数是什么意思;

还有一种方式,可以读取二进制文件

 

$data=inplode(“”,file($file));         //需要测试

 

?>

 

2.3写文件

 

和读取文件的方式一样,先看看是不是能写

<?php

  $file=”dirlist.php”;

  If(is_writable($file)==false) 

  {

     Die(“文件没有写入的权限”);

 

   }

?>

 

能够写入的话使用的是file_put_contents函数写入:

<?

  $file=”dirlist.php”;

  If(is_writable($file)==false)

 {

   Die(“我是鸡毛,我不能。”);

 }

 $date=”我是写入内容”;

 File_put_contents($file,$data);

?>

 

File_put_contents函数是在php5中新引进的函数(不知道存在的话用

Function_exists函数先判断一下),低版本的php无法使用,可以使用如下的方式:

 

$f=fopen($file,”w”);

Fwrite($f,$data);

Fclose($f);

 

写文件的时候有时候需要锁定,然后写:

Function cache_page($pageurl,$pagedata)

{

   If(!$fso=fopen($pageurl,”w”)) 

   {

      $this->warns(“无法打开缓存文件。”); //错误提醒

      Return false;

   }

   If(!loack($fos,LOCK_EX))

{

   //lock_nb ,排它型锁定

   $this->warns(“无法锁定缓存文件。”);//错误提醒

   Return false

}

If(!fwrite($fso,$pagedata))

{

   //写入字节流,$serialize写入其他的格式

  $this->warns(“无法写入缓存文件”); //错误提醒

  Return false;

}

Flock($fso,LOCK_UN);//解放锁定

Fclose($fso);

Return true ;

}

 

 

2.4复制,删除文件

 

Php删除文件是非常简单的,用unlink函数简单操作:

<?php

  $file=”dirlist.php”;

  $result=@unlink($file);

  If($result==false)

  {

    Echo “文件已经删除”;

  }else{

     Echo “文件删除失败”;

  }

?>

可以使用rename()函数重命名一个文件夹,其他的炒作都是这几个函数组合一下就能够实现

 

2.5获取文件属性

 

我这个说几个常见的幻术

 

获取最近修改时间

<?php

  $file=”text.txt”;

Echo date(“r’,filemtime($file));

?>

 

返回的说unix的时间戳,这个在缓存技术常用

 

相关的还有获取上次被访问的时间fileatime(),filectime()当前文件的权限,所有则,所有组或其他inode中的元素被更新时间,fileowner()函数返回文件所有者;

 

$owner=posix_getpuid(flieowner($file));

 

(window系统)ileperms 获取文件的权限,

<?php

  $file=”dirlist.php”;

$perms=substr(sprintf(‘%o’,fileperms($file)),-4);

Echo $perms;

?>

.

Filesize( ) 返回文件大小的字节数

 

 

 

<?php

   //输出类似:somefile.txt   1024 bytes

 

   $filename=”somefile.txt”;

   Echo $filename.”:”.filesize($filename).”bytes”;

?>

 

获取文件的全部信息有个返回数组的函数stat() 函数

<?php

   $file=”dirlist.php”;

$perms=stat($file);

Var_dump($perms);

?>

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。