主页
软件技术
返回
PHP应用中的八种常见文件操作方式

    PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。 PHP安装它可以比 CGI 或者 Perl 更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执 PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。 PHP安装它可以比 CGI 或者 Perl 更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。

文件和目录的操作PHP处理本地服务器上的文件和目录是非常方便的,但有时候会出现权限和路径相关的问题

1.打开文件

        resource fopen ( string filename, string mode [, bool use_include_path [,

        resource zcontext]] )

        $handle = fopen(filename,mode)//打开文件,返回代表此文件的资源的句柄

        文件名称可以使用相对路径或者绝对路径也可以使用网络协议模式,打开模式具有r +ww+aa+xx+ 在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 字符的奇怪问题。

        为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。

        以下是几种打开文件的方式

        $fp = @fopen('log.txt',"rb");

        $fp = @fopen('../log.txt',"rb");

        $fp = @fopen(";,"rb");//还可以使用ftp和ghoper等协议,必须启用php.ini文件中的allow_url_fopen选项  

        $filename1 = "userinfo.txt";//目录下或include_path中存在这个文件

        $filename2 = "test.txt";//目录下或include_path并不存在这个文件

        $resource1 = fopen($filename1,"rb");

        @$resource2 = fopen($filename2,"rb");//因为目录中不存在这个文件,并且并未使用或include_path寻找包含文件所在路径则此操作会报错,使用错误抑制符@可以迫使浏览器不输出错误信息

        if($resource1)

        echo "打开文件{$filename1}成功";

        if(!@fopen($filename2,"r"))

        echo "打开文件{$filename2}不成功";  

 

2.使用完毕文件后,要显式的告诉PHP已经使用完文件,让操作系统确保将文件的所有内容正确地从缓冲区刷新到硬盘

使用fclose()关闭文件,

    bool fclose ( resource handle )//关闭一个已打开的文件指针

3.读取文件,fopen函数的mode参数允许读取,PHP提供了几个函数从文件读取数据

        string fgets ( int handle [, int length] )从文件指针中读取一行,在二进制文件上尝试fgets会产生不可预测的结果

        如果不指定长度,默认读取1K数据,碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止

        string fgetss ( resource handle [, int length [, string allowable_tags]] )从文件指针中读取一行并过滤掉 HTML 标记

        fgetc()读取单个字符

        fread()读取任意二进制数据

         

        $handle = fopen ("test.jpg", "rb");

         

        while (!feof($handle)) {

        $contents .= @fread($handle, 8192);//循环读取并将其合并为一个大块文件

        }

        fclose($handle);

          

4.判断文件读取的状态

        每个文件句柄都有一个文件指针,或者一个指出下一个操作将在文件中哪里发生的游标,

        根据fopen函数的mode参数

        文件指针最初位于文件的开头(0),或者文件的末尾

        feof()可以判断文件是否已经到末尾(到末尾后函数返回TRUE)

        filesize()函数返回文件的大小 5.写入文件

        fwrite()函数执行文件写入  

        $filename = 'test.txt';

        $somec;

        // 首先我们要确定文件存在并且可写。

        if (is_writable($filename)) {

        // 在这个例子里,我们将使用添加模式打开$filename,

        // 因此,文件指针将会在文件的开头,

        // 那就是当我们使用fwrite()的时候,$somecontent将要写入的地方。

        if (!$handle = fopen($filename, 'a')) {

        echo "不能打开文件 $filename";

        exit;

        }

        // 将$somecontent写入到我们打开的文件中。

        if (fwrite($handle, $somecontent) === FALSE) {

        echo "不能写入到文件 $filename";

        exit;

        }

        echo "成功地将 $somecontent 写入到文件$filename";

        fclose($handle);

        } else {

        }

        echo "文件 $filename 不可写";

         

        对于二进制数据,必须指定第三个参数,它包含写入到磁盘的数据字节数

        $result = @fwrite($fp,$binary_data,mb_strlen($binary_data,'8bit'));

6.文件权限和其他信息

        is_readable()//判断文件是否可读

        is_writeable()//判断文件是否可写

        is_writable()//判断文件是否可写

        fileperms()//判断文件的权限(UNIX风格的文件权限测试函数)

        file_exists()//是否存在这个文件

        fileowner()//判断文件所属用户

        filegroup()//判断文件所属组

7.删除和重命名文件

        unlink()//删除文件

        rename()//重命名文件

8.访问目录

        目录访问建议使用前向斜线"/",兼容windows和unix系统

        basename()//返回不包括路径信息的文件名

        dirname()//返回文件名的目录部分

        realpath()//接受相对路径,返回文件的绝对路径

        pathinfo()//提取给定路径的目录名,基本文件名和扩展名

        opendir()//打开目录,返回资源句柄

        readdir()//读取目录项

        rewinddir()//将读取指针返回开头

        closedir()//关闭读取句柄

        chdir()//改变当前脚本执行期间的当前工作目录

        mkdir()//创建目录

        rmdir()删除目录



孟建民:设计原点应从建筑回归到人
时评:“四化同步”发展关键是城镇化
马岩松:把自然、人性、情感放在首位
陆轶辰:建筑是有价值观的
建筑工程:装修施工项目安全技术措施分析
邹巍:用设计诠释故事和风景、空间与生活
时评:城市规划拷问“都市农业”
2015年安全工程师考点:事故应急管理相关法律法规要求
信息发布:名易软件http://www.myidp.net