PHP学习系列之文件处理和操作系统
2013-05-09 23:25
633 查看
class Demo3Action extends Action { public function test(){ /* * ==========================处理文件和操作系统============================== *一、文件和目录: *1.获取路径的文件名(是否带后缀): *string basename(string path[,string suffix]); */ $path = "public/js/base.js"; echo "文件名:".basename($path);//base.js echo "<br>"; echo "文件名称:".basename($path,".js");//base /* * 2.获取路径的目录: * string dirname(string path); */ echo "<br>"; echo "路径名称:".dirname($path);//public/js /* * 3.获取更多关于路径的信息 * array pathinfo(string path); */ dump(pathinfo($path)); /*result: * array * 'dirname' => string 'public/js' (length=9) * 'basename' => string 'base.js' (length=7) * 'extension' => string 'js' (length=2) * 'filename' => string 'base' (length=4) */ /* * 4.获取绝对路径 * string realpath(string path); */ echo "<br>"; echo realpath($path);//G:\wamp\www\myFirstProj\public\js\base.js /* *二、计算文件、目录和磁盘大小 *1.确定文件的大小 *int filesize(string filename); */ $filename="public/js/base.js"; echo "<br>"; echo "base.js大小:".round(filesize($filename)/1024,2)."KB";//3.22KB /* *2.计算磁盘的可用空间 *float disk_free_space(string directory); *返回指定的目录所在磁盘分区的可用空间(目录应为该磁盘的第一级目录) */ echo "<br>"; echo "可用空间大小".round(disk_free_space("/wamp")/1024/1024/1024,2)."GB";//25.66GB /* * 3.计算磁盘的总容量 * float disk_total_space(string directory); * 返回指定的目录所在磁盘分区的总容量 */ echo "<br>"; echo "总容量".round(disk_total_space("/wamp")/1024/1024/1024,2)."GB";//41.9GB /* *4.获取目录大小 *一般用递归实现 */ echo "<br>"; //echo "目录总大小:".round($this->getDirSize("/wamp")/1024/1024,2)."MB";//386.91MB /* *三、确定访问和修改时间 *1.确定文件的最后访问时间 *int fileatime(string filename); */ echo "<br>"; echo "最后访问时间:".date("Y-m-d H:i:s a",fileatime("/wamp/www/UIBMSPHPProj/public/js/base.js"));//2013-04-24 23:09:48 pm echo "<br>"; /* * 2.确定文件的最后改变时间 * 最后改变时间和最后修改时间的区别: * 最后改变时间:改变权限、所有者、组或其他inode信息的改变 * 最后修改时间:文件内容的修改 * int filectime(string filename); */ echo "最后改变时间:".date("Y-m-d H:i:s a",filectime("/wamp/www/UIBMSPHPProj/public/js/base.js"));//2013-04-24 22:37:01 pm echo "<br>"; /* *3.确定文件的最后修改时间 *int filemtime(string filename); * */ echo "最后修改时间:".date("Y-m-d H:i:s a",filemtime("/wamp/www/UIBMSPHPProj/public/js/base.js"));//2013-04-24 23:09:48 pm echo "<br>"; /* *四、文件处理 *1.换行 *windows 上是\r\n,lunix 上是\n *2.识别文件末尾字符 *int feof(string resource) *确定对否到达文件末尾,I/O操作中常用 */ $pathinfo="G:/wamp/www/myFirstProj/public/js/base.js"; /* if(file_exists($pathinfo)){ $fh=fopen($pathinfo, "rt"); while(!feof($fh)){ //打印出base.js的每一行 //echo fgets($fh)."<br>"; } fclose($fh); } */ /* *3.打开和关闭文件 *resource fopen(string resource,string mode[,int use_include_path[,resource zcontext]]); *fopen将文件绑定到一个句柄,绑定之后,脚本就可以通过句柄与文件交互。 *boolean fclose(string filehandle); *具体实例如2 */ /* *4.读取文件 *a)将文件读入数组 * array file(string filename[,int use_include_path[,resource context]]); * 该函数把一个文件写入数组中,各元素由换行符分隔,同时换行符扔附加在每个元素的末尾 * */ $pathinfo="G:/wamp/www/myFirstProj/aa.txt"; $str=file($pathinfo); dump($str); /* array 0 => string 'dd ' (length=4) 1 => string 'ee ' (length=4) 2 => string '2 ' (length=3) 3 => string '3' (length=1) */ echo strlen($str[2]);//此处输出长度为3,因为window下换行符的\r\n /* * b)将文件内容读入到字符串变量 * string file_get_contents(string filename[,int use_include_path[,resource context]]); * */ $pathinfo="G:/wamp/www/myFirstProj/aa.txt"; $str=file_get_contents($pathinfo); dump(json_decode($str,true));//true返回数组,false 返回对象 /* * result: array 'aa' => string '11' (length=2) 'bb' => string '22' (length=2) 'cc' => string 'mycoffe' (length=7) */ /* *c)将csv文件读入数组 * array fgetcsv(resource handle[int length[,string delimiter[,string enclosure]]]); * 遇到换行时读取不会停止,会在读取了length个字符后停止, * 实例:从文本文件中读取出来是出现乱码? * 答:iconv函数转码 */ $dh=fopen("G:/wamp/www/myFirstProj/bb.csv","r"); while(($data=fgetcsv($dh,1000,","))!== false){ list($name,$sex,$age)=$data; $name=iconv('gbk','utf-8',var_export($name,true)); $sex=iconv('gbk','utf-8',var_export($sex,true)); echo "姓名:".$name.",性别:".$sex.",年龄:".$age."<br>"; } /* * 持续中.................... */ } /* * 计算目录大小 */ private function getDirSize($dirname){ $dirsize = 0; if($dh=@opendir($dirname)){ while(($file=readdir($dh))){ if($file!= "." && $file!== ".."){ $line=$dirname."/".$file; if(is_file($line)){ $dirsize+= filesize($line); } if(is_dir($line)){ $dirsize+=$this->getDirSize($line); } } } } @closedir($dh); return $dirsize; } }
相关文章推荐
- PHP学习笔记(处理文件和操作系统)--路径
- PHP学习笔记:处理文件和操作系统
- 对比JAVA学习PHP系列:应用:php的文件系统处理
- php基础系列:从用户登录处理程序学习mysql扩展基本操作
- PHP学习笔记11——文件处理
- PHP学习系列(1)——字符串处理函数(5)
- PHP学习笔记-->011 PHP文件处理
- php学习_第11章_文件系统处理
- fastq文件格式处理工具系列学习
- PHP学习文件处理与文件上传 课件第1/2页
- 简单的文件系列函数,包装成类,学习文件处理中。。。。
- (一)PHP学习笔记系列之(文件操作) //待完善
- PHP学习系列之文件访问及文件操作
- [总结 学习] 用php处理文件上传
- PHP学习系列之文件上传
- 书籍:p/m程序设计:处理文件和操作系统(更新到shell部分,php文件目录等已更新完毕)
- PHP处理文件和操作系统的相关函数
- PHP学习文件处理与文件上传 课件第1/2页
- 【细说PHP学习】第十五章 文件系统处理
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理