您的位置:首页 > 编程语言 > PHP开发

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;
}

}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: