PHP文件处理及高级应用

PHP文件处理—打开/关闭文件

一:打开文件php

对文件进行操做的时候,咱们首先要作的就是打开文件,这是进行数据存取的第一步。在PHP中使用 fopen()函数打开文件,fopen()函数的语法以下:html

resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )

参数 filename 是要打开包含路径的文件名,能够使相对路径,也能够是绝对路径。若是没有任何前缀侧表示打开的事本地文件,参数 mode 是打开文件的方式,能够取值以下:数组

 

 

二:关闭文件服务器

对文件的操做结束后应该关闭这个文件,不然可能会引发错误。在 PHP 中使用 fclose()函数关闭文件,该函数的语法格式以下;函数

bool fclose ( resource $handle )

具体看下面的示例代码:url

<?php

$f_open = fopen('./index_ok.php','rb');
...
fclose($f_open);

 

PHP文件处理—如何读取文件(一行,整个文件)

从文件中读取数据spa

从文件中读取数据,能够读取一个字符、一行字符串或者是整个文件,还能够读取指定长度的字串。3d

1.读取整个文件:readfile()、flie()以及file_get_contents()三个函数。指针

readfile()函数code

readfile()函数用于读入一个文件而且将其写入到输出缓冲,若是出现错误则返回 false。 

使用 readfile()函数,不须要打开文件和关闭文件,也不须要 echo ,print等输出语句,直接先写出文件路径就能够了。

flie()函数

flie()函数也能够读取整个文件的内容,只是 file()函数将文件内容按行存放到数组中,包括换行符在内,若是读取失败则返回 false。

file_get_contents()函数

file_get_contents()函数将文件的内容(fliename)读入到一个字符串中。若是没有 offset 和 maxlen参数 ,将从参数offset所指定的位置开始读取长度为 maxlen的一个字符串。若是读取失败那么就会返回false。

 

下面的实例就是使用上面的三个函数读取文件内容,具体代码以下:

<html>
<body>
    <table border="1">
        <tr>
            <td>readfile()</td>
            <td><?php readfile('text.txt'); ?></td>
        </tr>
        <tr>
            <td>file()</td>
            <td><?php 
                $f_arr = file('text.txt');
                foreach($f_arr as $cont){
                    echo $cont.'<br>';
                }
            ?></td>
        </tr>
        <tr>
            <td>file()</td>
            <td><?php 
                $f_chr = file_get_contents('text.txt');
                echo $f_chr;
            ?></td>
        </tr>
    </table>
</body>
</html>

输出结果为:

 

 

2.读取一行数据:fgets()函数和fgetss()函数

(1) fgets()函数

fgets()函数用于一次读取一行数据。

(2)fgetss()函数

fgetss()函数是fgets()函数的变体,用于读取一行数据。同事,fgetss()函数会过滤掉被读取内容中的 HTML 和 PHP标记。

该函数可以从读取的文件中过滤掉任何 html 和 PHP 标记,能够使用参数来控制哪些标记不被过滤掉。

<html>
<body>
    <table border="1">
        <tr>
            <td>fgets()</td>
            <td><?php 
                $f_open = fopen('text.txt','rb');
                while(!feof($f_open)){
                    echo fgets($f_open);
                }
                fclose($f_open);
            ?></td>
        </tr>
        <tr>
            <td>fgetss()</td>
            <td><?php 
                $f_open = fopen('text.txt','rb');
                while(!feof($f_open)){
                    echo fgetss($f_open);
                }
                fclose($f_open);
            ?></td>
        </tr>
    </table>
</body>
</html>

输出结果为:

 

 

PHP文件处理—读取文件(一个字符,字串)

一:读取一个字符:fgetc()函数

下面的实例用 fgetc()函数逐个字符读取文件里的内容,而且输出,具体示例代码以下:

<?php
$fopen = fopen('text.txt','rb');//建立文件资源
while(false !== ($chr = fgetc($fopen))){
    echo $chr;
}
fclose($fopen);

二:读取指定长度的字串:fread()函数

<?php

$filename = 'text.txt';
$fopen = fopen($filename,'rb');//建立文件资源
echo fread($fopen,6);
echo '<p>';
echo fread($fopen,filesize($filename));

 

PHP文件处理—写入文件及操做文件

一:将数据写入文件

写入数据也是 PHP 中经常使用的文件操做,在PHP中使用 fweite() 和file_put_contents()函数向文件中写入数据。

1.fwrite()也称之为fputs(),他们两个的用法是相同的。

2.file_put_contents()函数是PHP5新增的函数

使用file_put_contents()函数和依次调用 fopen(),fwrite(),fclose()函数所实现的功能同样。下面咱们经过具体实例比较一下!

本实例首先使用 fwrite()函数向文件写入数据,在使用file_put_contents()函数写入数据,具体示例代码以下:

<?php

$filename = 'text.txt';
$str = 'cyy you~';
$fopen = fopen($filename,'wb') or die('文件不存在');
fwrite($fopen,$str);
fclose($fopen);
readfile($filename);

$str2 = 'cyy2 you~';
file_put_contents($filename, $str2);
readfile($filename);

输出结果为:

 

 

二:操做文件

PHP 除了能够对文件内容进行读写,对文件自己一样也能够进行操做,如:复制,重命名,查看修改日期等。PHP 内置了大量的文件操做函数,经常使用的文件操做函数以下表:

 

 

 

 

注意:

在读写文件时,除了file(),readfile()等少数几个函数外,其余操做必需要先使用 fopen()函数打开文件,最后用 fclose()函数关闭文件,文件的信息函数(如:filesize,filemtime 等)则都不须要打开文件,只要文件存下就能够了!

 

PHP目录处理—打开/关闭目录

一:打开目录

打开/关闭目录和打开/关闭文件相似,可是打开的文件若是不存在,那么就会自动建立一个新的文件,而打开的目录若是不正确,那么就必定会报错!PHP使用 opendir()函数来打开目录

二:关闭目录

关闭目录使用 closedir()函数

下面的实例就是为打开和关闭目录的流程代码,具体示例代码以下:

<?php

$path = 'D:\phpstudy_pro\WWW\test\uploads';
if(is_dir($path)){
    if($dir = opendir($path)){
        echo $dir;
    }else{
        echo '路径错误';
        exit();
    }
}

closedir($dir);

结果:

 

 

PHP目录处理—浏览目录以及操做目录

—:浏览目录

在 PHP 浏览目录中的文件,咱们使用 scandir()函数

该函数返回一个数组,包含 directory 中的全部文件和目录。参数 sorting_order 指定排序顺序,默认按字母升序排序,若是添加了该参数,那么就会变为降序排序。

下面的实例将查看一个目录下的全部文件,具体示例代码以下:

<?php

$path = 'D:\phpstudy_pro\WWW\test';
if(is_dir($path)){
    $dir = scandir($path);
    foreach($dir as $value){
        echo $value.'<br>';
    }
}else{
    echo '路径错误';
}

closedir($dir);

运行结果以下:

 

 

二:操做目录

目录是一种特殊的文件,也就是说,对文件的操做函数(如:重命名)多数一样适用于目录,可是还有一些特殊的函数只是专门针对目录的,下面列表就是一些经常使用的目录操做函数:

 

 

PHP文件处理的高级应用—远程文件访问及锁定文件

一:远程文件的访问

PHP 支持URL格式的文件调用,只要在 php.ini中设置一下就能够了,php.ini 中找到allow_url_fopen,将该选项设为ON。重启服务器后就能够使用 HTTP或者FTP的URL格式了

<?php

$filename = 'http://localhost/test/text.txt';
readfile($filename);

二:锁定文件

在向一个文本文件写入内容的时候,须要先锁定该文件,以防止其余用户同事修改此文件的内容,在PHP中锁定文件的函数为 flock()

 

 

在下面的实例中 使用 flock()函数锁定文件,而后在写入数据,最后解除锁定,关闭文件,具体示例代码以下:

<?php

$filename = 'text.txt';
$fd = fopen($filename,'w');
//锁定文件,独占共享
flock($fd,LOCK_EX);
fwrite($fd,'new cyy');
//解除文件锁定
flock($fd,LOCK_UN);
fclose($fd);
readfile($filename);

说明:

在向文件写入数据的时候,使用 W 或者 w+ 模式打开文件,这个时候若是使用了 LOCK_EX,那么同一时间访问此文件的其余用户就没法得到文件的大小,不能进行操做!

 

PHP文件处理的高级应用—文件指针

一:rewind()函数

该函数将文件 handle 的指针设置为文件流的开头

注意:

若是将文件与追加(“a”)模式打开,那么写入文件的任何数据老是会被附加在文件已有的内容末尾,不论文件指针的位置在何处!

二:fseek()函数

fseek()函数实现文件指针的定位

三:feof()函数

该函数判断文件指针是否在文件尾

四:ftell()函数

ftell()函数返回当前指针的位置

下面就是使用上面 4个指针函数来输出文件中的内容,示例代码以下:

<?php

$filename = 'text.txt';
if(is_file($filename)){
    echo '文件总字节数:'.filesize($fopen).'<br>';
    $fopen = fopen($filename,'rb');
    echo '指针初始位置:'.ftell($fopen).'<br>';
    fseek($fopen,14);
    echo '此时指针位置:'.ftell($fopen).'<br>';
    echo '当前指针以后的内容:'.fgets($fopen).'<br>';
    if(feof($fopen)){
        rewind($fopen);
        echo '此时指针位置:'.ftell($fopen).'<br>';
        fclose($fopen);
    }
}
else{
    echo '文件不存在';
}

输出结果为:

 

欢迎QQ交流讨论:965794175

相关文章
相关标签/搜索