您的位置:首页 > 编程语言 > PHP开发

52_PHP的文件系统操作(一)文件的类型与属性(53)PHP文件处理(二)文件路径及操作和权限

2012-08-03 23:42 519 查看
52_PHP的文件系统操作(一)文件的类型与属性PHP文件系统处理

所有文件处理都是使用系统函数完成的。

是基于Linux/Unix系统为模型的,有的函数在windows操作系统中不好用。

文件系统处理的作用:

1. 所有的项目离不开文件处理

2. 可以用文件长时间保存数据

3. 建立缓存, 服务器中文件操作

文件处理

1. 文件类型

以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型

在Linux/Unix下, block, char, dir, fifo, file, link, unknown和种型

block :块设置文件,磁盘分区,软驱, cd-rom等

char: 字符设备,I/O (输入输出中)以字符为单位的设备, 例如键盘,打印机等

dir: 目录也是文件的一种/目录文件

fifo: 信息管道,从一个程序传输到另一个进程

file:普通的文件类型如文本文件,可执行文件

link: 链接文件,相当于windows下的快捷方式

unknown
:未知

filetype("目录或文件名")

is_array();判断是不是数组

is_int();判断是不是整型

is_string();判断是不是字符串

is_null;判断是不是空

is_bool();判断是不是布尔型

is_dir -- 判断给定文件名是否是一个目录

is_executable -- 判断给定文件名是否可执行

is_file -- 判断给定文件名是否为一个正常的文件

is_link -- 判断给定文件名是否为一个符号连接

is_readable -- 判断给定文件名是否可读

is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的

is_writable -- 判断给定的文件名是否可写

is_writeable -- is_writable() 的别名

2. 文件的属性

file_exists();--文件是否存在

filesize();--文件大小

is_readable();--文件是否可读

is_writeable();--文件是否可写

filectime();--文件创建时间

filemtime();--文件修改时间

fileactime();--文件最后访问时间

stat();--文件状态

3. 和文件目录相关的函数

4. 文件的操作(创建文件,删除文件,移动文件)

5. 文件的打开与关闭(读文件中的内容, 向文件中写内容)

6. 文件内部移动指针(读取文件内部部分内容的时候将指针移动到要读的内容)

7. 文件的锁定一些机制处理

目录的处理

1. 目录的遍历

2. 目录的创建

3. 目录的删除

4. 目录的复制

5. 统计目录大小

文件上传和下载

1. 上传

2. 下载

1、 echo filetype("hello")."<br>";

echo filetype("demo.txt")."<br>";

if(is_writable("hello")){

echo "这是一个目录";

}else{

echo "这是一个文件";

}

2、 date_default_timezone_set("PRC");

function getFilePro($fileName){

if(!file_exists($fileName)){

echo "文件或目录{$fileName} 不存在<br>";

return;

}else{

echo "文件的类型".filetype($fileName)."<br>";

}

if(is_file($fileName)){

echo "这是一个文件<br>";

echo "文件的大小为".getFileSize(filesize($fileName))."<br>";

} //判断文件单位

if(is_dir($fileName)){

echo "这是一个目录<br>";

}

if(is_readable($fileName)){

echo "这个文件可以读<br>";

}

if(is_writable($fileName)){

echo "这个文件可以写<br>";

}

if(is_executable($fileName)){

echo "这个文件可以执行<br>";

}

echo "文件的创建时间:".date("Y-m-d H:i:s",filectime($fileName))."<br>"; //年:月:日,时:分:秒

echo "文件的修改时间:".date("Y-m-d H:i:s",filemtime($fileName))."<br>";

echo "文件的最后访问时间:".date("Y-m-d H:i:s",fileatime($fileName))."<br>";

}

function getFileSize($size){ //转换尺寸单位

$dw="Byte";

if($size >= pow(2, 40)){ //2的40次方或者1024的4次方

$size=round($size/pow(2, 40), 2); //最后这个2是小数点保留两位

$dw="TB";

}else if($size >= pow(2, 30)){

$size=round($size/pow(2, 30), 2);

$dw="GB";

}else if($size >= pow(2, 20)){

$size=round($size/pow(2, 20), 2);

$dw="MB";

}else if($size >= pow(2, 10)){

$size=round($size/pow(2, 10), 2);

$dw="KB";

}else {

$dw="Bytes"; //字节

}

return $size.$dw;

}

getFilePro("demo.txt");

getFilePro("hello");

3、 date_default_timezone_set("PRC");

echo '<pre>'; //原格式输出数组

print_r(stat("demo.txt"));

echo '</pre>';

4、date_default_timezone_set("PRC");

$cache=5; //缓存时间,5秒内是读取文件内容,5秒后是更新文件内容,可以写内容。从时间上可以看出文件多久没有被更新了

$cachefile="cache.txt"; //缓存的文件

if(file_exists($cachefile) && (time()-$cache) < filemtime($cachefile)) { //用当前时间减去缓存时间,如果小于修改时间,那证明还在缓存的时间内在缓存中获取数据。如果大于修改时间重新生成缓存时间

echo file_get_contents($cachefile); //如果在缓存的10秒内,就从缓存文件中获取数据

}else{

file_put_contents($cachefile, date("Y-m-d H:i:s", time())); //否则重新生成缓存时间


}

(53)PHP文件处理(二)文件路径及操作和权限

<?php

/* PHP文件系统处理

* 所有文件处理都是使用系统函数完成的。

* 是基于Linux/Unix系统为模型

*

* 文件系统处理的作用:

* 1. 所有的项目离不开文件处理

* 2. 可以用文件长时间保存数据

* 3. 建立缓存, 服务器中文件操作

*

* 文件处理

* 1. 文件类型

* 以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型

* 在Linux/Unix下, block, char, dir, fifo, file, link,

unknown和种型

* block :块设置文件,磁盘分区,软驱, cd-rom等

* char: 字符设备,I/O 以字符为单位, 键盘,打印机等

* dir: 目录也是文件的一种

* fifo:

* file:

* link:

* unknown

*

* filetype("目录或文件名")

*

* is_array();

* is_int();

* is_string();

* is_null;

* is_bool();

*

is_dir -- 判断给定文件名是否是一个目录

is_executable -- 判断给定文件名是否可执行

is_file -- 判断给定文件名是否为一个正常的文件

is_link -- 判断给定文件名是否为一个符号连接

is_readable -- 判断给定文件名是否可读

is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的

is_writable -- 判断给定的文件名是否可写

is_writeable -- is_writable() 的别名

*

*

* 2. 文件的属性

* file_exists();

* filesize();

* is_readable();

* is_writeable();

* filectime();

* filemtime();

* fileactime();

* stat();

*

* 3. 和文件路径相关的函数

*

* 相对路径:相对于当前目录的上级和下级目录

* . 当前目录

* .. 上一级目录

*

* ./php/apache/index.php

* php/apahce/index.php

* login.php

* ./login.php

* ../images/tpl/logo.gif

*

*

* 路径分隔符号

* linux/Unix "/"

* windows "\"

*

* DIRECTORY_SEPARATOR 为不同平台,在Windows \ Linux /

*

* 不管是什么操作系统PHP的目录分割符号都支技 / (Linux)

*

* 在PHP和Apache配置文件中如果需要指定目录,也使用/作为目

录符号

*

* 绝对路径:

* / 根路径

*

* /images/index.php

*

* 指的操作系统的根

* 指的是存放网站的文档根目录

*

* 分情况

*

* 如果是在服务器中执行(通过PHP文件处理函数执行)路径 则 “根”指的就是操作系统的根

* 如果程序是下载的客户端,再访问服务器中的文件时,只有通过Apache访问,“根”也就指的是

文档根目录

*

*从客户端程序访问服务器端的就得通过服务器以以下格式访问http://www.xsphp.com/logo.gif

*

*

* basename(url) //只要文件名

* dirname(url) //目录名

* pathinfo(url) //路径信息

*

*

*

*

* 4. 文件的操作(创建文件,删除文件,移动文件)

创建文件 touch("文件名")

* 删除文件 unlink("文件路径");

* 移动文件 为文件重新命名 rename("当前文件路径", “目录为文件路径”)

* 复制文件 copy("当前", “目标”);

*

* 一定要有PHP执行这个文件权限, Apache, 一个用户

*

*

* 和权限设计有关的函数

*

*

ls -l 或 ll

_rwxrwxrwx 777

_ 类型 _文件 d 表示是目录 l b

rwx 表这个文件的拥有者 r读 w写 x执行

rwx 表这个文件的拥有者所在的组 r读 w写 x执行

rwx 其它用户对这个为文件的权限 r读 w写 x执行

r 4

w 2

x 1

7 7 7 4+2+1 4+2+1 4+2+1

rwx rwx rwx

644

4+2 4 4

rw_ r__ r__

754

chmod u=rwx,g=rw,o=x //用户读写执行权限、组读写、其他用户执行的权限

chmod 777 demo.php //可读可写可执行

chmod 644 demo.html //当前用户可读可写,其他用户只读不写

chown mysql demo.php //把demo.php的拥有者改为mysql

chgrp apache demo.php //把demo.php的拥有组改为apache

chgrp -- 改变文件所属的组

chmod -- 改变文件模式

chown -- 改变文件的所有者

filegroup -- 取得文件的组

fileowner -- 取得文件的所有者

// touch("./php.apahce"); //创建一个为文件

// unlink("C:/AppServ/www/xsphp/apache.php");

// rename("./test.txt", "d:/test2.txt");

// copy("cache.txt", "./cache5.txt");

chmod("/aaa/index.php", "755"); //将文件权限改为755

* 5. 文件的打开与关闭(读文件中的内容, 向文件中写内容)

* 6. 文件内部移动指针

* 7. 文件的锁定一些机制处理

*

*

* 目录的处理

* 1. 目录的遍历

* 2. 目录的创建

* 3. 目录的删除

* 4. 目录的复制

* 5. 统计目录大小

*

*

* 文件上传和下载

* 1. 上传

* 2. 下载

*

*

*/

1、 $url1="./aaa/bbb/index.php";

$url2="../www/yyy/login.rar";

$url3="c:/appserv/www/demo.html";

$url4="http://localhost/yyy/www.gif";

echo basename($url1)."<br>"; //只要文件名的时候用这个函数,非常方便

echo basename($url2)."<br>";

echo basename($url3)."<br>";

echo basename($url4)."<br>";

index.php

login.rar

demo.html

www.gif

2、 $url1="./aaa/bbb/index.php";

$url2="../www/yyy/login.rar";

$url3="c:/appserv/www/demo.html";

$url4="http://localhost/yyy/www.gif";

echo dirname(dirname($url1))."<br>";

echo dirname($url2)."<br>";

echo dirname($url3)."<br>";

echo dirname($url4)."<br>";

3、 $url1="./aaa/bbb/index.php";

$url2="../www/yyy/login.rar";

$url3="c:/appserv/www/demo.class.html";

$url4="http://localhost/yyy/www.gif";

echo '<pre>';

print_r($path=pathinfo($url3));

echo '</pre>';

echo $path["extension"]; //path的扩展名部分是html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: