Maison > php教程 > php手册 > PHP常用技术文之文件操作和目录操作总结

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

WBOY
Libérer: 2016-06-13 09:24:40
original
1066 Les gens l'ont consulté

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

   header("content-type","text/html;charset=utf-8");

 /*

 *声明一个函数,传入文件名获取文件属性

 *@param string $fileName 文件名称

 */

 function getFilePro($fileName)

 {

   if(!file_exists($fileName))

   {

     echo '文件不存在
';

     return;

   }

   /*是否是普通文件*/

   if(is_file($fileName))

   {

     echo $fileName.'是一个文件
';

   }

   /*是否是目录*/

   if(is_dir($fileName))

   {

     echo $fileName.'是一个目录';

   }

   /*输出文件的型态*/

   echo '文件型态是:'.getFileType($fileName).'
';

   /*文件大小,转换单位*/

   echo '文件大小是:'.getFileSize(filesize($fileName)).'
';

   /*文件是否可读*/

   if(is_readable($fileName))

   {

     echo '文件可读
';

   }

   /*文件是否可写*/

   if(is_writable($fileName))

   {

     echo '文件可写
';

   }

   /*文件是否可执行*/

   if(is_executable($fileName))

   {

     echo '文件可执行
';

   }

  

   echo '文件创立时间:'.date('Y年m月j日',filectime($fileName)).'
';

   echo '文件最后修改时间:'.date('Y年m月j日',filemtime($fileName)).'
';

   echo '文件最后打开时间:'.date('Y年m月j日',fileatime($fileName)).'
';

 }

  

 /*

 *声明一个函数,返回文件类型

 *@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 '

';

  echo '

';

  echo '

  echo '

';

 

  while($file = readdir($dir_handle))

  {

    $dirFile = $dirName.'/'.$file;

    $bgcolor = $num++%2==0?'#ffffff':'#cccccc';

    echo '

';

    echo '

';

    echo '

';

    echo '

';

    echo '

';

    echo '

';

  }

  echo "

目录'.$dirName.'下的文件

文件名 文件大小 文件类型 修改时间
'.$file.' '.filesize($dirFile).' '.filetype($dirFile).' '.date('Y/n/t',filemtime($dirFile)).'
";

  closedir($dir_handle); /*关闭目录*/

  echo "在".$dirName."目录下共有".$num.'个子文件';

}

/*传递当前目录下的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');

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal