php--文件处理系统



 一、概述:

1.1 文件类型:

文件在windows系统下分为3种不同:文件、目录、未知

在linux/unix系统下分为7种不同:block、char、dir、fifo、file、link和unknown七种类型

1.2 文件的常用函数:

                filetype() --获取文件类型的函数:

                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 。

file_exists( ) 检查文件或目录是否存在

filesize() 取得文件大小(不能获取目录大小)

is_readable() 判断文件是否可读

is_writable() 判断文件是否可写

filectime() 获取文件的创建时间

filemtime() 获取文件的修改时间

fileatime() 获取文件的访问时间

stat() 获取文件大部分属性

二、目录的相关操作

2.1 路经的方式:

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

linux/unix系统: /a/b/c.php

为统一建议使用"/"作为目录之间的分割符

2.2 路径的相关函数(4个):

1. basename("url地址"[,去除部分]) -- 获取指定url的文件名

2. dirname("url地址") -- 获取地址的路径值

示例:

$url = "http://www.baidu.com/a/b/c.php";


echo $url; //http://www.baidu.com/a/b/c.php

echo basename($url)"; //c.php

echo basename($url,".php"); //c (去掉".php")

echo dirname($url); //http://www.baidu.com/a/b

3. pathinfo(文件路径[,需要的下标])--获取文件路径的详细信息,返回一个关联数组

结果:下标:dirname 路径名

                     basename 文件名

                                     extension 后缀名

                     filename 文件名(去掉后缀的)

示例:

$url = "http://www.baidu.com/a/b/c.php";

echo pathinfo($url,PATHINFO_DIRNAME); //http://www.baidu.com/a/b

echo pathinfo($url,PATHINFO_EXTENSION); //php 后缀名

echo pathinfo($url,PATHINFO_BASENAME); //c.php 文件名

$a = pathinfo($url); 

$a结果:

array(4) {

  ["dirname"]=>

  string(24) "http://www.baidu.com/a/b"

  ["basename"]=>

  string(5) "c.php"

  ["extension"]=>

  string(3) "php"

  ["filename"]=>

  string(1) "c"

}

4. realpath()--获取指定文件的绝对路径

示例: echo realpath("1.php"); //D:\AppServ\www\lamp45\09_file_dir\1.php

2.3 目录的遍历函数:

opendir("") -- 打开一个目录,返回此目录的资源句柄

readdir(资源句柄) -- 从目中读取一个目录或文件,并指针向下移动一位。

closedir(资源句柄)-- 关闭打开的目录

rewinddir(资源句柄) -- 倒回目录指针(移至首位)

2.4 统计空间的大小

echo "当前磁盘可用大小:".(disk_free_space("./")/1024/1024/1024)."G";

echo "当前磁盘共计大小:".(disk_total_space("./")/1024/1024/1024)."G";

2.5 目录的操作

mkdir() -- 创建一个目录

rmdir() -- 删除一个目录(只支持删除空目录)

unlink() -- 删除一个文件

2.6 复制文件:

copy() --- 复制文件。不支持目录复制

三、文件基本操作

1. fopen(文件名,打开模式) ---打开一个文件

模式:读(r、r+)、 清空写(w/w+), 追加写(a/a+)、 创建模式(x,x+)

打开模式: r: 只读模式打开文件,文件指针执行首位。

r+: 可读可写模式打开文件,文件指针执行首位,若文件指针不是在最后,则是覆盖写。

*w: 以写方式打开文件,文件内容清空,若文件不存在,则尝试创建。

w+: 以写和读方式打开文件,文件内容清空,若文件不存在,则尝试创建。(也会覆盖写)

*a: 以追加内容方式打开文件,指针移至最后,若文件不存在,则尝试创建。

a+: 以追加内容和可读方式打开文件,指针移至最后,若文件不存在,则尝试创建。

x: 以创建方式打开文件,可写。若文件已存在,则报错。

x+: 以创建方式打开文件,可写可读。若文件已存在,则报错。

附加模式:

t: txt文本模式(字符流)

b: byte字节模式(二进制)默认 (字节流)

如:fopen("a.txt","rb");

文件的读写操作也叫流操作,其中流分为字符流(t)和字节流(b 二进制)

2. fread(打开的文件资源,读取的长度) -- 读取文件内容。


3. fwrite(打开的文件资源,被写入的字串[,长度]) -- 向文件写入内容。

4. fclose(打开的文件资源) -- 关闭文件

5. fgets() -- 从文件资源中读取一行

6. fgetc() -- 读取一个字符

         不用打开文件可直接操作文件的函数

7. file() 将文件读出(内容是数组格式),并返回

8. readfile() 将文件内容读出,并输出

9. file_get_contents() 读取文件内容

10.file_put_contents() 将指定内容写入文件

         文件指针的操作

11. ftell() --返回文件指针的位置

12. fseek() --设置文件指针的位置

示例:

fseek($f,-2,SEEK_CUR); //从当前指针位置开始,向前移动2位

fseek($f,2,SEEK_SET);  //从文件指针开始位置,向后移动2位

fseek($f,-5,SEEK_END);   //从文件指针的最后位置开始,向前移动5位

13. rewind()  --将文件指针移至首位

         文件锁

14. bool flock ( int $handle , int $operation [, int &$wouldblock ] )

轻便的咨询文件锁定

  operation参数:

要取得共享锁定(读取的程序),将 operation 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。 

要取得独占锁定(写入的程序),将 operation 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。 

要释放锁定(无论共享或独占),将 operation 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。 

如果不希望 flock() 在锁定时堵塞,则给 operation 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。 

示例:

$fp = fopen("/tmp/lock.txt", "w+");

if(flock($fp, LOCK_EX)) { // 进行排它型锁定

fwrite($fp, "Write something here\n");

flock($fp, LOCK_UN); // 释放锁定

} else {

echo "Couldn't lock the file !";

}

fclose($fp);


?> 

15. rename() --修改文件名

16. ftruncate() ― 将文件截断到给定的长度