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

【php】目录操作 文件操作

2016-07-18 17:51 471 查看
[php] view
plain copy

 print?

    php的目录处理函数主要包括如下几个:  

    ①mkdir():创建目录  

    ②is_dir():判断给定文件名是否是一个目录  

    ③rmdir():删除目录  

    ④basename():返回路径中的文件  

    ⑤dirname():返回路径中的目录  

  

(1)mkdir() 函数用于创建一个目录,成功返回 true,否则返回 false  

    语法:  

        bool mkdir( string dirname [, int mode ] )  

    注意:  

        可选参数 mode 表示创建该目录时给定的权限,默认是最大权限 0777   

案例:   

    <?php  

    $dirname = 'testdir';  

    if (mkdir($dirname, 0700)) {  

            echo "目录 $dirname 创建成功";  

    } else {  

            echo "目录 $dirname 创建失败";  

    }  

    ?>  

  

  

(2)is_dir() 函数用于检查给定文件名是否是一个目录,成功返回 true,否则返回 false  

    语法:  

        bool is_dir( string filename )  

案例:   

    <?php  

    var_dump(is_dir( 'images' ));   //输出:bool(true)  

    ?>  

  

  

(3)rmdir() 函数用于删除一个目录,成功返回 true,否则返回 false  

    语法:  

        bool rmdir( string dirname )  

案例:   

    <?php  

    $dirname = 'testdir';  

    if (rmdir( $dirname )) {  

            echo "目录 $dirname 删除成功";  

    } else {  

            echo "目录 $dirname 删除失败";  

    }  

    ?>  

  

  

(4)basename() 函数用于返回一个包含全路径的字符串中的基本文件名,成功返回字符串,否则返回 false  

    语法:  

        string basename( string path [, string suffix] )   

    注意:  

        可选参数 suffix 表示文件后缀,如果文件名后缀是 suffix ,那这一部分也会被去掉  

案例: 假定本地访问该文件 URL 地址为:http://127.0.0.1/html/test.php   

  

    <?php  

    echo $PHP_SELF;         //输出:/html/test.php  

    echo basename( $PHP_SELF );     //输出:test.php  

    echo basename( $PHP_SELF, '.php');  //输出:test  

    ?>  

  

(5)dirname() 函数用于返回一个包含全路径的字符串中去掉文件名的目录,成功返回字符串,否则返回 false。  

    语法:  

        string dirname( string path )   

案例:   

    假定本地访问该文件 URL 地址为:http://127.0.0.1/html/test.php   

      

    <?php  

    echo $PHP_SELF;     //输出 /html/test.php  

    echo dirname( $PHP_SELF );  //输出 /html  

    ?>  

[php] view
plain copy

 print?

    php提供了丰富的文件处理函数  

文件处理主要包括:  

    ①文件的创建/打开  

    ②文件的写入  

    ③文件读取  

    ④检查文件是否存在  

    ⑤文件的拷贝与删除  

    ⑥获取文件的大小、类型及修改时间  

  

    fopen()函数的使用:  

  

fopen()函数主要用来打开一个文件或url地址  

    语法:  

        resource fopen(string filename,mode);  

        ①参数filename:尝试打开或创建的文件名  

        ②参数mode:打开模式  

    注意:  

    1.php中没有单独的文件创建函数,创建或打开文件都是使用fopen()函数  

    2.当使用fopen()函数打开一个文件时,如果文件不存在,则会尝试创建该文件,并返回一个资源;如果打开失败,返回false  

  

      

案例1,使用fopen()函数创建一个文件:  

  

    <?php  

    if(!file_exists("test.txt")){//如果文件不存在(当前目录下)  

        $fh=fopen("test.txt","w");//以只写模式创建一个test.txt文件  

        fclose($fh);//关闭文件  

    }  

    ?>  

  

案例2,使用fopen()函数打开url地址  

  

    <?php  

    $fh=fopen("http://www.baidu.com","r");  

    if($fh){  

        while(!feof($fh)){  

            echo fgets($fh);  

        }  

    }  

    ?>  

  

    注意:fopen()返回的只是一个资源,要想显示打开的页面地址,还需要使用fgets()函数读取,并使用echo输出  

  

    fwrite()函数的使用:  

  

fwrite()函数主要用来向文件写入字符串,如果写入成功,则返回写入的字符数,否则返回false  

    格式:  

        int fwrite(resource handle,string data,int length)  

      

    注意:fwrite()函数将data的内容写入文件指针handle处  

  

      

      

    注意:如果指定了可选参数length,当写入了length个字节或者写完了data以后,写入就会停止  

      

  

  

案例1,写入文件:  

  

    <?php  

    $filename="file.txt";//要写入的文件名称  

    $content="你好!";//要写入的内容  

    $fh=fopen($filename,"w");//打开文件  

    $num=fwrite($fh,$content);//将内容写入文件中,返回写入的字符数  

    //$num=fwrite($fh,$content,4);//只能将四个字符写入到file.txt文件中  

    echo $num;//输出结果为:6  

    fclose($fh);//关闭文件  

    ?>  

  

案例2,追加写入:  

  

    <?php  

    $filename="file.txt";  

    $content="你好!";  

    $fh=fopen($filename,"a");  

    echo fwrite($fh,$content);  

    fclose($fh);//关闭文件  

    ?>  

  

    file_put_contents()函数的使用:  

  

file_put_content():此函数主要用于一次性将字符串写入文件或追加字符串到文件,如果成功,返回写入到文件的字符数,失败的话返回false  

      

    语法:  

         int file_put_content(string filename,string data,int flags,resource context);  

  

  

  

案例1,写入文件:  

  

    <?php  

    echo file_put_contents("file.txt","你好");//浏览器输出结果为:4  

    ?>  

  

    注意:  

    1.如果文件不存在,则创建文件,相当于fopen()函数行为  

    2.如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免  

  

案例2,追加写入:  

      

    <?php  

    file_put_contents("file.txt","你好",FILE_APPEND);//追加内容到文件尾部  

    ?>  

  

    文件的读取函数:  

  

文件的读取函数主要有如下几种:  

    ①fread():从文件中读取数据  

    ②fgets():从文件中读取一行数据,并将文件指针指向下一行  

    ③fgetc():逐字读取文件数据,直到文件结束  

    ④file():把整个文件内容读取到一个数组中,数组中的每个元素都是文件中对应的一行  

    ⑤file_get_contents():将整个文件内容读入到一个字符串  

  

fread():此函数用于读取文件  

  

    语法:  

  

    string fread(int handle,int length);  

  

    注意:  

        fread()函数从文件指针handle读取最多length个字节。当遇到下列情况时,会停止读取文件  

        ①在读取完最多length个字节数时  

        ②达到文件末尾的时候(eof)  

  

案例:从文件中读取10个字节  

    <?php  

    $filename = "test.txt";  

    $fh = fopen($filename, "r");  

    echo fread($fh, "10");  

    fclose($fh);  

    ?>  

  

  

fgets():此函数主要用来从文件中读取一行数据,并将文件指针指向下一行  

  

    语法:  

  

    string fgets(int handle,int length)  

  

    注意:  

    ①fgets() 从 handle 指向的文件中读取一行并返回长度最多为 length-1 字节的字符串  

    ②碰到换行符(包括在返回值中)、EOF 或者已经读取了 length-1 字节后停止  

    ③如果没有指定 length ,则默认为 1K ,或者说 1024 字节  

案例:  

    <?php  

    $fh = @fopen("test.txt","r") or die("打开 test.txt 文件出错!");  

    // if条件避免无效指针  

    if($fh){  

            while(!feof($fh)) {  

                echo fgets($fh), '<br />';  

            }  

    }  

    fclose($fh);  

    ?>  

feof() 函数测试文件指针是否到了文件结束的位置,该文件指针必须有效,如果是无效的资源,则会陷入无限循环中  

  

fgetc():此函数主要用于逐字读取文件数据,直到文件结束  

  

    语法:  

  

    string fgetc(resource handle);  

  

案例:从文件中读取10个字节  

    <?php  

    $fh = @fopen("test.txt","r") or die("打开 test.txt 文件出错!");  

    if($fh){  

            while(!feof($fh)) {  

             echo fgetc($fh);  

            }  

    }  

    fclose($fh);  

    ?>  

  

  

  

  

  

file():此函数主要用于把整个文件读取到一个数组中,数组中的每个单元都是文件中相应的一行,成功,返回一个数组;失败返回false  

  

    语法:  

  

    array file(string filename);  

  

案例:从文件中读取10个字节  

    <?php  

    $lines = file('test.txt');  

    // 在数组中循环并加上行号  

    foreach ($lines as $line_num => $line) {  

            echo "Line #{$line_num} : ",$line,'<br />';  

    }  

    ?>  

  

test.txt 文件内容:   

  

你好!  

这是第二行文字。  

  

浏览器显示:   

  

Line #0 : 你好!   

Line #1 : 这是第二行文字。  

  

  

file_get_contents():此函数主要用于将整个文件读入到一个字符串,成功,则返回一个字符串;失败则返回false  

  

    语法:  

  

    string file_get_contents(string filename,int offset,int maxlen);  

  

  

案例:  

    <?php  

    // 读取时同事将换行符转换成 <br />  

    echo nl2br(file_get_contents('test.txt'));  

    ?>  

  

file_exists():此函数主要用来检查一个文件或目录是否存在  

  

    语法:  

  

    bool file_exists(string filename);  

  

案例:  

    <?php  

    $filename = 'test.txt';  

    if (file_exists($filename)) {  

            echo "文件 $filename 存在";  

    } else {  

            echo "文件 $filename 不存在";  

    }  

    ?>  

  

  

copy():此函数主要用来拷贝文件  

          

        成功返回true,失败返回false  

  

    语法:  

  

    bool copy(string file,string newfile);  

  

案例:  

    <?php  

    if (copy('test.txt', 'test.txt.bak')) {  

            echo "文件拷贝成功";  

    } else {  

            echo "文件拷贝失败";  

    }  

    ?>  

  

  

unlink():此函数主要用来删除文件  

          

        成功返回true,失败返回false  

  

    语法:  

  

    bool unlink(string filename);  

  

案例:  

    <?php  

    unlink("test.txt");   

    ?>  

  

  

获取文件信息的函数主要有如下几种:  

  

    ①filesize():取得文件大小,成功则返回文件大小的字节数,失败返回false  

  

    ②filetype():取得文件的类型,成功则返回文件的类型,可能的值有file、dir、char、block、link等  

  

    ③filemtime():取得文件的修改时间,成功则返回文件上次被修改的时间戳  

  

  

  

  

    问题?  

  

    如何锁定文件:在向一个文本文件中写入数据时,需要先锁定文件,以防其它用户同时也修改此文件内容,如何锁定文件呢?  

      

    php中通过flock()函数实现文件锁定,语法如下:  

      

    bool flock(int handle,int operation);  

      

    参数1:是一个已经打开的文件指针  

      

    参数2:控制锁定权限,有四个可选值:  

      

    LOCK_SH:取得共享锁定(读取程序)  

    LOCK_EX:取得独占锁定(写入程序)  

    LOCK_UN:释放锁定  

    LOCK_NB:防止iflock()在锁定时堵塞  



 



 



 

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