PHP常用技术文之文件操作和目录操作总结

 一、基本文件的操作

文件的基本操作有:文件判断、目录判断、文件大小、读写性判断、存在性判断及文件时间等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

<?php
   header("content-type","text/html;charset=utf-8");
 /*
 *声明一个函数,传入文件名获取文件属性
 *@param string $fileName 文件名称
 */
 function getFilePro($fileName)
 {
   if(!file_exists($fileName))
   {
     echo '文件不存在<br/>';
     return;
   }
   /*是否是普通文件*/
   if(is_file($fileName))
   {
     echo $fileName.'是一个文件<br/>';
   }
   /*是否是目录*/
   if(is_dir($fileName))
   {
     echo $fileName.'是一个目录';
   }
   /*输出文件的型态*/
   echo '文件型态是:'.getFileType($fileName).'<br/>';
   /*文件大小,转换单位*/
   echo '文件大小是:'.getFileSize(filesize($fileName)).'<br/>';
   /*文件是否可读*/
   if(is_readable($fileName))
   {
     echo '文件可读<br/>';
   }
   /*文件是否可写*/
   if(is_writable($fileName))
   {
     echo '文件可写<br/>';
   }
   /*文件是否可执行*/
   if(is_executable($fileName))
   {
     echo '文件可执行<br/>';
   }
  
   echo '文件创立时间:'.date('Y年m月j日',filectime($fileName)).'<br/>';
   echo '文件最后修改时间:'.date('Y年m月j日',filemtime($fileName)).'<br/>';
   echo '文件最后打开时间:'.date('Y年m月j日',fileatime($fileName)).'<br/>';
 }
  
 /*
 *声明一个函数,返回文件类型
 *@param string $fileName 文件名称
 */
 function getFileType($fileName)
 {
   $type = '';
   switch(filetype($fileName))
   {
     case 'file':$type .= '普通文件';break;
     case 'dir':$type .= '目录文件';break;
     case 'block':$type .= '块设备文件';break;
     case 'char':$type .= '字符设备文件';break;
     case 'filo':$type .= '管道文件';break;
     case 'link':$type .= '符号链接';break;
     case 'unknown':$type .= '未知文件';break;
     default:
   }
   return $type;
 }
  
 /*
 *声明一个函数,返回文件大小
 *@param int $bytes 文件字节数
 */
 function getFileSize($bytes)
 {
   if($bytes >= pow(2,40))
   {
     $return = round($bytes / pow(1024,4),2);
     $suffix = 'TB';
   }
   else if($bytes >= pow(2,30))
   {
     $return = round($bytes / pow(1024,3),2);
     $suffix = 'GB';
   }
   else if($bytes >= pow(2,20))
   {
     $return = round($bytes / pow(1024,2),2);
     $suffix = 'MB';
   }
   else if($bytes >= pow(2,10))
   {
     $return = round($bytes / pow(1024,1),2);
     $suffix = 'KB';
   }
   else
   {
     $return = $bytes;
     $suffix = 'B';
   }
  return $return." ".$suffix;
}
  
 /*调用函数,传入test目录下的test.txt文件*/
 getFilePro('./test/div.html');
?>

结果:

二、目录的操作

目录的操作有:遍历目录、删除、复制、大小统计等

1、遍历目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

/*
*遍历目录
*@param string $dirName 目录名
*/
function findDir($dirName)
{
  $num = 0; /*统计子文件个数*/
  $dir_handle = opendir($dirName); /*打开目录*/
  /*输出目录文件*/
  echo '<table border="0" align="center" width="600" cellspacing="0" cellpadding="0">';
  echo '<caption><h2>目录'.$dirName.'下的文件</h2></caption>';
  echo '<tr align="left" bgcolor="#cccccc"';
  echo '<th>文件名</th><th>文件大小</th><th>文件类型</th><th>修改时间</th></tr>';
 
  while($file = readdir($dir_handle))
  {
    $dirFile = $dirName.'/'.$file;
    $bgcolor = $num++%2==0?'#ffffff':'#cccccc';
    echo '<tr bgcolor='.$bgcolor.'>';
    echo '<td>'.$file.'</td>';
    echo '<td>'.filesize($dirFile).'</td>';
    echo '<td>'.filetype($dirFile).'</td>';
    echo '<td>'.date('Y/n/t',filemtime($dirFile)).'</td>';
    echo '</tr>';
  }
  echo "</table>";
  closedir($dir_handle); /*关闭目录*/
  echo "在<b>".$dirName."</b>目录下共有<b>".$num.'</b>个子文件';
}
/*传递当前目录下的test目录*/
findDir('./test');

结果

2、统计目录大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

/*
 *统计目录大小
 *@param string $dirName 目录名
 *@return double
 */
  
function dirSize($dirName)
{
   $dir_size = 0;
   if($dir_handle = @opendir($dirName))
   {
     while ($fileName = readdir($dir_handle))
     {
       /*排除两个特殊目录*/
       if($fileName != '.' && $fileName != '..')
       {
         $subFile = $dirName.'/'.$fileName;
         if(is_file($subFile))
         {
           $dir_size += filesize($subFile);
         }
         if(is_dir($subFile))
         {
           $dir_size += dirSize($subFile);
         }
       }
     }
     closedir($dir_handle);
     return $dir_size;
   }
 }
 /*传递当前目录下的test目录*/
 $dir_size = dirSize('./test');
 echo './test目录文件大小是:'.round($dir_size / pow(1024,1),2).'KB';

结果:

3、删除目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

/*
*删除目录
*@param string $dirName 目录名
 */
 function delDir($dirName)
 {
   /*php中的mkdir函数就可以创建目录*/
   if(file_exists($dirName))
   {
     if($dir_handle = @opendir($dirName))
     {
       while ($fileName = readdir($dir_handle))
       {
         /*排除两个特殊目录*/
         if($fileName != '.' && $fileName != '..')
         {
           $subFile = $dirName.'/'.$fileName;
           if(is_file($subFile))
           {
             unlink($subFile);
           }
           if(is_dir($subFile))
           {
             delDir($subFile);
           }
         }
       }
       closedir($dir_handle);
       rmdir($dirName);
       return $dirName.'目录已经删除';
     }
   }
 }
 /*传递test目录的副本test1*/
 echo delDir('./test1');

删除成功的提示信息

4、复制目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/*
*复制目录
*@param string $dirSrc 原目录名
*@param string $dirTo 目标目录名
*/
function copyDir($dirSrc,$dirTo)
{
  if(is_file($dirTo))
  {
    echo '目标目录不能创建';/*目标不是一个*/
    return;
  }
  if(!file_exists($dirTo))
  {
    /*目录不存在则创建*/
    mkdir($dirTo);
  }
  if($dir_handle = @opendir($dirSrc))
  {
    while ($fileName = readdir($dir_handle))
    {
      /*排除两个特殊目录*/
      if($fileName != '.' && $fileName != '..')
      {
        $subSrcFile = $dirSrc.'/'.$fileName;
        $subToFile = $dirTo.'/'.$fileName;
        if(is_file($subSrcFile))
        {
          copy($subSrcFile,$subToFile);
        }
        if(is_dir($subSrcFile))
        {
          copyDir($subSrcFile,$subToFile);
        }
      }
    }
    closedir($dir_handle);
    return $dirSrc.'目录已经复制到'.$dirTo.'目录';
  }
}
echo copyDir('./test','../testcopy');

时间: 2024-09-14 20:15:25

PHP常用技术文之文件操作和目录操作总结的相关文章

PHP常用技术文之文件操作和目录操作总结_php实例

一.基本文件的操作 文件的基本操作有:文件判断.目录判断.文件大小.读写性判断.存在性判断及文件时间等 <?php header("content-type","text/html;charset=utf-8"); /* *声明一个函数,传入文件名获取文件属性 *@param string $fileName 文件名称 */ function getFilePro($fileName) { if(!file_exists($fileName)) { echo

PHP 创建文件(文件夹)以及目录操作代码_php技巧

一.目录操作 首先是从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: 复制代码 代码如下: <?php $base_dir="filelist/"; $fso=opendir($base_dir); echo $base_dir."<hr/>"; while($flist=readdir($fso)){ echo $flist."<br/>";

AIX系统文件操作和目录操作基础

1.文件类型 ●普通文件 包括用户和系统的各种文本文件.代码文件.程序文件和数据文件等等. ●目录 包括文件和子目录信息,目录采用倒树状结构. ● 特殊文件 表示物理或逻辑设备,这些文件存放在 /dev 目录下面. 2.文件及目录名称 ●文件或目录名称最多可以由 255 个字符组成,包括大写字母.小写字母. 数字字符.#.@_等字符. ●文 件 或 目 录 名 称 中 不 可 以 含 有 空 格 , 不 可 以 包 含 以 下 字 符 : *?></;&![]$\'",不可以

PHP目录文件操作函数目录操作详谈

目录,文件操作详谈-php   ● 写文件 和读取文件的方式一样,先看看是不是能写: <?php $file = ''dirlist.php'';if (is_writable($file) == false) {        die("我是鸡毛,我不能");}?> 能写了的话可以使用file_put_contents函数写入: <?php$file = ''dirlist.php'';if (is_writable($file) == false) {      

ChinaUnix.net技术文档手册中心_常用工具

(CU网友csfrank热心提供)" href="http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/index.html" target=_blank>Apache2.2中文手册(2006-10-20重要更新版)(CU网友csfrank热心提供) 构建和安装 Linux 包(CU网友bobkey翻译并热心提供) GTK+ Reference Manual(英文版) 备份工具Amanda官方文档 备份工具Bac

PHP常用的基本文件和目录操作总结

一.基本文件的操作 文件的基本操作有:文件判断.目录判断.文件大小.读写性判断.存在性判断及文件时间等    1: <?php    2:     header("content-type","text/html;charset=utf-8");    3: /*    4: *声明一个函数,传入文件名获取文件属性    5: *@param string $fileName 文件名称    6: */    7: function getFilePro($f

基于DevExpress实现对PDF、Word、Excel文档的预览及操作处理

原文:基于DevExpress实现对PDF.Word.Excel文档的预览及操作处理 在一般的管理系统模块里面,越来越多的设计到一些常用文档的上传保存操作,其中如PDF.Word.Excel等文档,有时候是通过分布式的WCF技术实现数据的显示和处理,因此希望直接预览而不需要下载文件,这样能够给我们提供很多的方便.在DevExpress里面,提供了相应的控件来显示和处理这些文档,本文主要介绍如何利用DevExpress的控件实现对PDF.Word.Excel文档的预览和操作处理. 1.PDF的预览

PHP教程:PHP的目录操作和文件操作

一.引论 在任何计算机设备中,文件是都是必须的对象,而在web编程中,文件的操作一直是web程序员的头疼的地方,而,文件的操作在cms系统中这是必须的,非常有用的,我们经常遇到生成文件目录,文件(夹)编辑等操作,现在我把php中的这些函数做一详细总结并实例示范如何使用.,关于对应的函数详细介绍,请查阅php手册.此处只总结重点.和需要注意的地方.(这在php手册是没有的.) 二.目录操作 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是

XML技术上传文件-转贴

xml|上传                         XML技术上传文件 概述本文讲解了一个使用XML技术上传文件的例子,使用该方法没有传统方法中的种种限制. 这个例子讲述了如何使用MSXML3.0和ADO Stream对象来实现这种新的上传方法.好处有很多,比如,不需要专用的上传组件. 引言为了在HTML网页中获得上传功能,在客户端我们可以使用如下格式的FORM: <FORM NAME="myForm"ACTION="TargetURL.asp"EN