|
php文件系统处理
1、文件系统概述
is_dir( ) -- 判断给定文件名是否是一个目录
语法结构:bool is_dir(名称)
返回类型:文件名存在并且是一个目录则返回 true,否则返回 false。
is_executable( ) -- 判断给定文件名是否可执行
语法结构:bool is_executable(名称)
返回类型:如果文件存在且可执行则返回 true ,否则返回 false 。
is_file( ) -- 判断给定文件名是否为一个正常的文件
语法结构:bool is_file(名称)
返回类型:如果文件存在且为正常的文件则返回 true 。
is_link( ) -- 判断给定文件名是否为一个符号连接
语法结构:bool is_link(名称)
返回类型:如果文件存在并且是一个符号连接则返回 true。
is_readable( ) -- 判断给定文件名是否可读
语法结构:bool is_readable(文件名称)
返回类型:如果文件存在并且可读则返回 true 。
is_writable( ) -- 判断给定的文件名是否可写
语法结构:bool is_writable(文件名称)
返回类型:如果文件存在并且可写则返回 true 。
2、文件的属性
//获取文件属性的函数
Function getFilePro($filename) {
//文件是否存在
if(file_exists($filename)) {
echo"这个文件存在";
//获取文件的类型
getFileType($filename);
if(is_dir($filename)) {
echo"这是一个目录";
}
if(is_file($filename)) {
echo"这是一个文件";
echo"文件大小为:".tosize(filesize($filename))."";
}
//获取文件权限
if(is_readable($filename)) {
echo"文件可读";
}
if(is_writable($filename)) {
echo"文件可写";
}
if(is_executable($filename)) {
echo"文件可执行";
}
//创建时间
echodate("Y-m-d H:i:s",filectime($filename))."";
//访问时间
echodate("Y-m-d H:i:s",fileatime($filename))."";
//修改时间
echodate("Y-m-d H:i:s",filemtime($filename))."";
}else {
echo"这个文件不存在";
}
}
//文件大小转换函数
functiontosize($size) {
$s=$size;
$dw="";
if($size> pow(2, 40)) {
$s= $size/pow(2, 40);
$dw= "TB";
}elseif($size > pow(2, 30)) {
$s= $size/pow(2, 30);
$dw= "GB";
}elseif($size > pow(2, 20)) {
$s= $size/pow(2, 20);
$dw= "MB";
}elseif($size > pow(2, 10)) {
$s= $size/pow(2, 10);
$dw= "KB";
}else{
$s= $size;
$dw= "types";
}
return$s.$dw;
}
//获取文件的类型
functiongetFileType($filename){
//可能的值:fifo,char,dir,block,link,file
switch(filetype($filename)) {
case'dir':
echo"这是一个目录";
break;
case'char':
echo"这是一个字符设置";
break;
case'block':
echo"这是一个块设备";
break;
case'file':
echo"这是一个文件";
break;
case'link':
echo"这是一个链接";
break;
default:
echo"末知类型";
}
}
getFilePro("./feng.txt");
3、解析目录路径
DIRECTORY_SEPARATOR 代表 /
PATH_SEPARATOR 代表 ;
PHP_EOL 代表 换行符
4、遍历目录
//打开目录资源
$dir = opendir("plus");
while($filename = readdir($dir)) {
//不要操作.和..
if($filename!="."&& $filename!="..") {
//一定要注意路径, 找对才可以
$filename ="./plus/".$filename;
if(is_dir($filename)) {
echo "目录:".$filename."";
} else {
echo "文件:".$filename."";
}
}
}
rewinddir($dir);//倒回目录句柄
echo"@@@@@@@@@@@@@";
while($filename = readdir($dir)) {
//不要操作.和..
if($filename!="."&& $filename!="..") {
//一定要注意路径, 找对才可以
$filename ="./plus/".$filename;
if(is_dir($filename)) {
echo "目录:".$filename."";
} else {
echo "文件:".$filename."";
}
}
}
//关闭这个资源
closedir($dir);
//opendir()打开目录句柄
//readdir()从目录句柄中读取条目
//is_dir()判断给定文件名是否是一个目录
//rewinddir()倒回目录句柄
//closedir()关闭目录句柄
//glod()遍历目录里文件
foreach(glob("member/*") as $filename ) {
echo$filename."";
}
5、统计目录的个数和大小
$total = disk_total_space("c:"); //统计磁盘总大小的
$free = disk_free_space("c:");//统计磁盘可用空间大小
echo"C:盘约总大小:".round($total/pow(2,30))."G";
echo"C:盘可用空间:".round($free/pow(2,30))."G";
统计目录中的个数和大小实例
$dirn =0;//目录数
$filen =0;//文件数
//用来统计一个目录下的文件和目录的个数
functiongetdirnum($file){
global $dirn;
global $filen;
$dir = opendir($file);
while($filename = readdir($dir)){
if($filename!="."&& $filename!=".."){
$filename =$file."/".$filename;
if(is_dir($filename)){
$dirn++;
getdirnum($filename);//递归、就可以查看所有子目录
}else{
$filen++;
}
}
}
closedir($dir);
}
getdirnum("plus");
echo"目录数为:{$dirn}";
echo"文件数为:{$filen}";
//统计一个目录大小
functiondirsize($file){
$size = 0;
$dir = opendir($file);
while($filename = readdir($dir)){
if($filename!="." && $filename!=".."){
$filename =$file."/".$filename;
if(is_dir($filename)){
//使用递归
$size +=dirsize($filename);
}else{
$size += filesize($filename);
}
}
}
closedir($dir);
return$size;
}
echo"目录大小为:".dirsize("member")/pow(1024,2)."Mb";
6、建立与删除目录
//mkdir("meizi"); 新建目录
//mkdir("finger",0644);
//rmdir("meizi"); 删除目录
//rmdir("finger");
//unlink 删除文件
functiondeldir($dirname){
if(!file_exists($dirname)){
die("文件夹不存在!");
}
if(is_file($dirname)){
unlink($dirname);
}
$dir = opendir($dirname);
while($filename = readdir($dir)){
if($filename !="."&& $filename!=".."){
$filename =$dirname."/".$filename;
if(is_dir($filename)){
deldir($filename);
}else{
unlink($filename);
}
}
}
}
deldir("aaa");
7、复制移动目录
//$dirsrc源目录
//$dirto 目标目录
function copydir($dirsrc, $dirto){
//如果原来的文件存在、是不是一个目录
if(file_exists($dirto)){
if(!is_dir($dirto)){
echo "目标不是一个目录、不能copy进去";
exit;
}
}else{
mkdir($dirto);
}
$dir =opendir($dirsrc);
while($filename= readdir($dir)){
if($filename != "."&& $filename!=".."){
$srcfile =$dirsrc."/".$filename;//原文件
$tofile =$dirto."/".$filename;//目标文件
if(is_dir($srcfile)){
copydir($srcfile,$tofile); //递归处理所有子目录
}else{
copy($srcfile, $tofile);
}
}
}
}
copydir("member","E:/cisco");
8、文件的一些基本操作函数
//创建一个空文件
//touch("./feng.txt");
//复制文件
//copy("feng.txt","meize.txt");
//移动或重新命名一个文件
//rename("meize.txt","meizi.txt");
//删除一个文件
//unlink("meizi.txt");
// $fp = fopen("feng.txt","w");
// ftruncate($fp, 100); 把文件截断到指定的长度
//对文件内容的操作
// file_get_contents("");
//file_put_contents("meizi.txt","妹子今年18!"); 写入文件内容
//file_put_contents("meizi.txt","小妹子今年19!");
//echo file_get_contents("meizi.txt"); 读取文件内容
//file_put_contents("baidu.txt",file_get_contents("http://www.baidu.com"));
//readfile("http://www.baidu.com");输出一个文件
$arr =file("meizi.txt"); //file 把整个文件读入一个数组中
echocount($arr);
echo'';
echo$arr[20];
9、文件的打开与关闭
|
|
|