首页 > 技术文章 > 【代码学习】文件系统处理

sqyysec 2017-04-14 14:14 原文

一、概述

--------------------------------------------------------------------------------------------

1、文件类型

  在windows系统下分为3种类型:file、dir、unknow

  在UNIX系统下分为7种类型:block、char、dir、fifo、file、link和unknow

  

1 <?php
2 //获取在Linux系统下的文件类型
3 echo filetype('/etc/');
4 echo filetype('/etc/passwd');
5 //获取Window系统下文件类型
6 echo filetype('C:\Windows');
7 echo filetype('C:\Windows\Win.ini');
8 ?>

2、文件属性

 1 filetype()  --获取文件类型
 2 is_dir()  --判断给定文件是否是一个目录
 3     语法结构:bool is dir
 4     返回类型:如果文件名存在并且是一个目录则返回true,否则返回false
 5 is_executable() --判断给定文件是否可执行
 6     语法结构:bool is executable
 7     返回类型:如果文件存在且可执行则返回true,否则返回false
 8 is_file()  --判断给定文件是否为一个正常文件
 9     语法结构:bool is file
10     返回类型:如果文件存在且为正常的文件则返回true
11 is_link()  --判断给定文件是否是一个符号链接
12     语法结构:bool is link
13     返回类型:如果文件存在并且是一个符号链接则返回true
14 is_readable()  --判断给定文件是否可读
15 is_writeable()  --判断指定文件是否可写
16 file_exists()  --检查文件或目录是否存在
17 filesize()  --获取文件大小(不能获取目录大小)
18 filectime()  --获取文件的创建时间
19 filemtime()  --获取文件的修改时间
20 fileatime()  --获取文件的访问时间
21 stat()       --获取文件大部分属性

二、目录的基本操作

--------------------------------------------------------------------------------------------

1、解析目录路径

  Windows系统:D:/a/b/c.php 或 D:\a\b\c.php

  Linux或UNIX系统:/a/b/c.php

2、路径相关的函数

  (1)basename("url地址"[,去除部分])

    返回路径中文件名部分

  

1 <?php
2 //包含指向文件路径的字符串
3 $path = "/www/php/test.php";
4 echo basename($path);         //输出test.php
5 echo basename($path,'php');   //输出test.
6 ?>

  (2)dirname("url地址")

    返回目录名部分

1 <?php
2 //包含指向文件路径的字符串
3 $path = "/www/php/test.php";
4 echo dirname($path);         //输出 /www/php
5 ?>

  (3)pathinfo(文件路径[,需要的下标])

    获取文件路径的详细信息,返回一个关联数组

1 <?php
2 //包含指向文件路径的字符串
3 $path = "/www/php/test.php";
4 $path_parts = pathinfo($path);    //返回指定路径中的基本名,目录名和扩展名
5 echo $path_parts['basename'];     //输出test.php
6 echo $path_parts['dirname'];      //输出/www/php/
7 echo $path_parts['extension'];    //输出php
8 ?>

3、遍历目录

 1 <?php
 2 //打开目录资源
 3 $dir = opendir('phpMyAdmin');
 4 //读取目录
 5 while($filename = readdir($dir)){
 6     //禁止操作.和..
 7     if($filename != '.' && $filename != '..'){
 8         //读取phpMyAdmin下的文件
 9         $filename = './phpMyAdmin/' .$filename;
10         //读取目录和文件
11         if(is_dir($filename)){
12             echo '目录' .$filename .'<br>';
13         }else{
14             echo '文件' .$filename . '<br>';
15         }
16     }
17 }
18 //关闭目录资源
19 closedir($dir);
20 ?>

4、统计空间大小

1 disk_free_space()   --统计可用空间大小
2 disk_total_space()  --统计共用磁盘大小

5、建立和删除目录

  (1)建立目录

    每个目录下都具有 可读、可写、可操作三个权限。用数字代表三个权限可表示 可读 ->4,可写 ->2,可操作 ->1。

    mkdir("目录名",权限)    权限需要八进制,所以要以0开头

1 <?php
2 mkdir("dir0");        //默认权限
3 mkdir("dir1",0644);   //dir1目录下的文件有可读可写权限,同组用户有读的权限,其他用户哟读的权限
4 ?>

  (2)删除目录

rmdir()  -- 删除一个目录(只支持删除空目录)
unlink() -- 删除一个文件
 1 <?php
 2 function deldir($dirname){
 3     //判断是否存在文件或者文件夹
 4     if(file_exists($dirname)){
 5         echo "文件夹不存在";
 6     }
 7     //判断是否是一个文件
 8     if(is_file($dirname)){
 9         unlink($dirname);
10     }
11     //打开目录
12     $dir = opendir($dirname);
13     //读取目录
14     while($filename = readdir($dir)){
15         //排除文件夹中.和..
16         if($filename != "." && $filename != ".."){
17             //读取文件下所有文件
18             $filename = $dirname . '/' .$filename;
19             //判断是否为一个文件夹
20             if(is_dir($filename)){
21                 //调用deldir函数
22                 deldir($filename);
23             }else{
24                 unlink($filename);
25             }
26         }
27     }
28     //关闭目录
29     closedir($dir);
30     //删除目录
31     rmdir($dirname);
32 }
33 deldir('wjxtgl');
34 ?>

6、复制文件及目录

1 copy("复制的文件","复制文件的位置")

推荐阅读