【php】文件处理操作

来源:互联网 发布:淘宝卖家淘金币 编辑:程序博客网 时间:2024/04/30 08:10
php提供了丰富的文件处理函数文件处理主要包括:①文件的创建/打开②文件的写入③文件读取④检查文件是否存在⑤文件的拷贝与删除⑥获取文件的大小、类型及修改时间fopen()函数的使用:fopen()函数主要用来打开一个文件或url地址语法:resource fopen(string filename,mode);①参数filename:尝试打开或创建的文件名②参数mode:打开模式注意:1.php中没有单独的文件创建函数,创建或打开文件都是使用fopen()函数2.当使用fopen()函数打开一个文件时,如果文件不存在,则会尝试创建该文件,并返回一个资源;如果打开失败,返回false案例1,使用fopen()函数创建一个文件:<?phpif(!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;//输出结果为:6fclose($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,写入文件:<?phpecho file_put_contents("file.txt","你好");//浏览器输出结果为:4?>注意:1.如果文件不存在,则创建文件,相当于fopen()函数行为2.如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免案例2,追加写入:<?phpfile_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);案例:<?phpif (copy('test.txt', 'test.txt.bak')) {    echo "文件拷贝成功";} else {    echo "文件拷贝失败";}?>unlink():此函数主要用来删除文件成功返回true,失败返回false语法:bool unlink(string filename);案例:<?phpunlink("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()在锁定时堵塞


 

 

 

原创粉丝点击