PHP文件处理系统

来源:互联网 发布:人工神经网络的算法 编辑:程序博客网 时间:2024/05/16 05:57

概述

PHP是以UNIX文件系统为模型的,因此在windows系统中,我们只能获得”file”、”dir”、“unknown”三种文件类型。

在这里,我们着重讲解file和dir类型。

1.文件类型

常用的有下面函数:
filetype()获取文件类型
is_file() 判断是否是普通文件类型
is_dir() 判断是否是目录类型
is_link() 判断是否是链接类型

2.文件属性

filesize() 获取文件大小(单位是byte)
fileatime() 获取文件访问时间
filectime() 获取文件创建时间
filemtime()获取文件修改时间
is_readable() 判断文件是否可读
is_writable()判断文件是否可写
is_executable() 判断文件是否可执行

stat()可以获取文件的大部分属性(以数组方式返回)

如下代码:

<?php $filename="index.php";echo filetype($filename);//fileecho is_readable($filename);//1echo is_writable($filename);//1var_dump(is_executable($filename));//falseecho date("Y-m-d H:i:s",filectime($filename));echo date("Y-m-d H:i:s",fileatime($filename));echo date("Y-m-d H:i:s",filemtime($filename));echo "<hr/>";echo round((filesize($filename)/1024),2)."kb";//0.35kb

目录操作

1.解析目录路径

basename() 获取文件

<?php $dir="G:/wamp/www/index.php";//获取目录中文件echo basename($dir);//index.phpecho basename($dir,".php");//index(过滤掉.php)

dirname()获取目录

<?php $dir="G:/wamp/www/index.php";echo dirname($dir);//G:/wamp/www

pathinfo()获取上面全部

<?php $dir="G:/wamp/www/index.php";print_r(pathinfo($dir));//Array ( [dirname] => G:/wamp/www [basename] => index.php [extension] => php [filename] => index )

2.遍历目录

opendir()

打开一个目录,返回资源类型的目录句柄

readdir()

返回当前目录指针位置的文件名,并且指针移动到下一位

closedir()

关闭指定目录

rewinddir()

将目录指针重置到目录开始处

如下代码:遍历一个目录

<?php header("content-type:text/html;charset=utf-8");$dir="G:/wamp";$handle=opendir($dir);function listDir($handle,$dir,$number=0){    while($file=readdir($handle))    {        $dirFile=$dir.DIRECTORY_SEPARATOR.$file;        if($file=="." || $file=="..")            continue;        echo  str_repeat("&nbsp;&nbsp;",$number).$file."&nbsp;&nbsp;&nbsp;&nbsp;";        echo round(filesize($dirFile)/1024,2)."KB"."&nbsp;&nbsp;&nbsp;&nbsp;";        echo filetype($dirFile)."&nbsp;&nbsp;&nbsp;&nbsp;";        echo filectime($dirFile)."<br/>";        if(is_dir($dirFile))        {            if($file=="." || $file=="..")                continue;            listDir(opendir($dirFile),$dirFile,$number+2);        }    }    closedir($handle);}listDir($handle,$dir);

建立和删除目录

建立目录:mkdir()
删除目录:rmdir()

但目录如果非空,则需要用unlink()删除目录的每个文件
//清空一个目录<?php header("content-type:text/html;charset=utf-8");function deleteDir($dir){    $handle=opendir($dir);    while($file=readdir($handle))    {        //如果是目录,就删除目录下的所有文件        if($file!="." && $file!=".."){            $subfile=$dir.DIRECTORY_SEPARATOR.$file;            if(is_file($subfile))            {                unlink($subfile);            }            if(is_dir($subfile))            {                deleteDir($subfile);            }        }    }    closedir($handle);    rmdir($dir);}mkdir("test");deleteDir("test");

文件操作

1.打开与关闭文件

打开文件

fopen(文件名,打开方式)
必须指定打开方式,指定打开方式,操作系统才知道对这个文件怎么操作(对这个文件加什么样的锁)

打开方式有下面几种:
r:只读方式
r+:读写方式
w:只写方式。清空文件开始写,文件不存在创建文件
w+:读写方式。清空文件开始读写,文件不存在创建文件
a:写入方式。从文件末尾开始写,文件不存在创建文件
a+:写入方式。从文件末尾开始读写,文件不存在创建文件
x:创建文件并以写入方式打开,如果文件存在,返回false
x+:创建文件并以读写方式打开,如果文件存在,返回false

关闭文件

fclose()关闭fopen()打开的额文件

2.读取与写入文件

写入文件

即将程序中的数据写入一个文件中:

fwrite($handle,文件内容,[文件长度])

<?php header("content-type:text/html;charset=utf-8");$handle=fopen("text.txt","w");for($i=0;$i<10;$i++){    fwrite($handle,($i+1)."heheehrwerer\r\n");//windows系统中,换行符是\r\n}fclose($handle);

快速写入:file_put_contents()
file_put_contents()和依次调用fopen()、fwrite(fputs())、fclose()一样。

读取文件

fread() 读取打开的文件

<?php clearstatcache();$handle=fopen("text.txt","r");//feof()用于判断文件是否到结尾while(!feof($handle)){    echo fread($handle,1024);}//或者使用fread($handle,filesize("text.txt"));

注意:要想读取全部的文件,使用file_get_contents()性能高

fgetc()和fgets()

fgetc()从文件中读取1个字符,遇到EOF返回

fgets($handle,length)
从文件中读取最多length-1个字符,如果忽略length,默认length为1024。
或者,fgtes()在遇到换行符或EOF时返回。

file()与file_get_contents()

file()和file_get_contents()函数相似
不过file()函数将文件内容返回到数组中,数组中的每个元素是一行

<?php print_r(file("text.txt"));

readfile()立即将文件输出到输出缓冲区

<?php readfile("text.txt");//直接将text.txt文件内容输出到浏览器

3.文件指针

ftell()返回当前文件指针位置
fseek($handle,offset)//默认从0开始移动offset个位置

SEEK_CUR 从当前指针处移动offset个位置SEEK_END 从末尾指针向前移动offset个位置(offset是负数)

rewind()重置指针

<?php $handle=fopen("text.txt","r");echo fread($handle,2);//指针移动到2echo ftell($handle);//2fseek($handle,8,SEEK_CUR);//指针为2+8=10处fseek($handle,-2,SEEK_END);//最后指针位置-2echo ftell($handle);

文件锁

锁,是为了控制文件并发。防止多个用户操作文件时,使文件发生数据不一致的情况。
flock($handle,$operation)

$operation的值为:
LOCK_SH 共享锁(读锁)
LOCK_EX 独占锁(写锁)
LOCK_UN 释放锁

使用flock()锁定的资源文件,可以被fclose()释放

文件上传于下载

文件上传与下载(一)
文件上传与下载(二)
文件上传与下载(三)

0 0
原创粉丝点击