宝哥软件园

PHP文件操作实现代码共享

编辑:宝哥软件园 来源:互联网 时间:2021-10-18

将数据写入或读取到文件中基本上分为三个步骤:1。打开文件(如果存在)2。写/读文件3。关闭文件l打开文件在打开文件之前,我们需要知道文件的路径以及文件是否存在。使用$ _ server ["document _ root"]的内置全局变量获取网站的相对路径。如下:$ root=$ _ server[" document _ root "];使用函数file_exists()检查文件是否存在。如下:如果(!file _ exists(' $ root/order . txt '){ echo '文件不存在';}然后用fopen()函数打开这个文件。$fp=fopen('$root/order.txt ',' ab ');fopen()函数接受2、3或4个参数。第一个参数是文件路径,第二个参数是操作模式(读/写/追加等)。),这是必需的。$fp=fopen('$root/order.txt ',' ab ');第三个参数是可选的。如果PHP需要在include_path中搜索文件,则无需提供目录名或路径即可使用。$fp=fopen('order.txt ',' ab ',true);第四个参数也是可选的,允许文件名以协议名开头(比如http://),在远程位置打开文件,还支持其他一些协议,比如ftp等。如果fopen()成功打开了一个文件,它将返回一个指向该文件的指针。我们将其保存在上面的$fp变量中。附件文件模式图

写文件用PHP写文件相对简单。直接使用fwrite()函数。rite()的原型如下:int fwrite(资源句柄,字符串[,int length]);第三个参数是可选的,表示写入文件的最大长度。字符串的长度可以通过内置的strlen()函数获得,如下所示:fwrite ($ FP,$ outputinfo,strlen($ output info));这个函数告诉PHP将$outputinfo中的信息保存到$fp指向的文件中。我读了文件1。在只读模式下打开文件时,fopen()函数仍在使用,但在只读模式下打开文件时,会使用“rb”文件模式。如下:$ FP=fopen ("$ root/order.txt ",' Rb ');2.知道了什么时候读完文件,我们使用while循环读取文件内容,并使用feof()函数作为循环条件的终止条件。如下:while(!Feof($fp)){ //待处理信息} 3。fgets()函数可以一次从文本文件中读取一行内容。如下:复制代码如下: $ FP=fopen($ root/order . txt ',' Rb ');while(!feof($fp)){ $info=fgets($fp,999);回声$信息。br/';} fc lose($ FP);这样,他将连续读取数据,直到读取新的行字符(n)或文件结束符EOF,或者从文件中读取998B,可读取的最大长度为指定长度减去1B。4.读取整个文件PHP提供了4种不同的方式来读取整个文件。a)。a)。readfile()函数可以直接使用,不需要fopen($path)文件和先关闭文件,也不需要echo。如下:read file(" $ root/order . txt ");它会自动将文件信息输出到浏览器。它的原型如下:int readfile(字符串文件名,[int use _ include _ path [,资源上下文]]);第二个可选参数指定PHP是否在include_path中查找文件,这与fopen函数相同,返回值是从文件中读取的字节总数。注:不用fopen或fclose b)直接使用。fpassthru()函数。要使用此功能,您必须首先用fopen()打开一个文件。然后将文件指针作为参数传递给fpassthru(),这样就可以输出文件指针所指向的文件内容。然后关闭这个文件。如下:$ FP=fopen ("$ root/order.txt ",' Rb ');FP assthru(FP美元);fc lose(FP美元);返回值也是从文件中读取的字节总数。注:fopen和fclose c)。file()函数与readfile()函数相同,只是它们将文件输出到浏览器,浏览器将结果发送到数组。如下:$ file array=file(" $ root/order . txt ");文件中的每一行都将用作数组的每个元素。注意:不用fopen和fclose d)直接使用。file_get_contents()函数与readfile()相同,但是这个函数会以字符串的形式返回文件内容,而不是直接将文件内容输出到浏览器,也就是说它必须使用echo输出,如下所示:echo file _ get _ contents(" $ root/order . txt ");注意:不用fopen和fclose直接使用。5.读取一个字符fgetc()一次从文件中读取一个字符。它有一个文件指针函数,这是唯一的参数,它返回下一个字符。如下:复制代码如下: $ FP=fopen($ root/order . txt ',' Rb ');while(!feof($ FP)){ $ char=fgetc($ FP);if(!feof($fp)){ echo ($char=='n '?br/' : $ char);} } fc lose($ FP);注意:fgetc()函数的一个缺点是它返回文件的终止符e of,而fgets()不返回。读完字符还需要判断feof()。6.读取任意长度的fread()函数意味着从文件中读取任意长度的字节。函数原型如下:String fread(资源FP,int length);使用此函数时,它要么读取长度参数指定的字节数,要么读取文件的结尾。复制代码如下: $ FP=fopen(' $ root/order . txt ',' Rb ');echo fread(10法郎);//读取10字节fc lose($ FP);l关闭文件关闭文件比较简单,直接调用fclose()函数即可,如果返回true,则表示成功,否则。

如下:fc lose($ FP);l删除文件unlink()函数(没有名为delete的函数),如下:unlink($ root/order . txt ');l要确定文件大小,可以使用filesize()函数检查文件的大小(以字节为单位),如下所示:echo file size(' $ root/order . txt ');你也可以参考下面的文章。下面是一篇关于文件基本读写操作的文章。看完这篇文章,我曾经学会了文件的基本操作,发在这里和大家分享:读文件:PHP代码:复制代码如下: 1。php 2。3.$ file _ name=' data.dat4.//要读取的文件的绝对路径是: home data . dat 5.6 . $ file _ pointer=fopen($ file _ name,' r ');7.//打开文件,8。“r”是一种模式,9。或者我们想做的操作方法,10。参见本文11.12后面的介绍。$ file _ read=fread ($ file _ pointer,file size($ file _ name));13.//传递文件意味着14。准确阅读文件内容。16.fc lose($ file _ pointer);17.//关闭文件18。19.打印“读取文件的内容为$ file _ read”;20.//显示文件内容21。22.写文件:PHP代码:复制代码如下: 1。php 2。3.$ file _ name=' data.dat4.//绝对路径: homedata . dat 5.6 . $ file _ pointer=fopen($ file _ name,' w ');7.//“w”是一个模式,8。参见以下9.10。fwrite ($ file _ pointer,'你想写什么');11.//先剪切文件。12.使其大小为0字节。13.然后把它写成14。15.fclose($file_pointer)。16.//End 17。18.打印“数据成功写入文件”;19.20.21.追加到文件后面:PHP代码:复制代码如下: 1。php 2。3.$ file _ name=' data.dat4.//绝对路径: homedata . dat 5.6 . $ file _ pointer=fopen($ file _ name,' a ');7.//'w '模式8.9.fwrite ($ file _ pointer,'您想要追加的内容');10.//第11号,把文件剪成0字节。13.将数据附加到文件的末尾。14.15.fclose($file_pointer)。16.//End 17。18.打印“数据成功追加到文件”;19.20.21.以上只是简单介绍,下面我们会讨论一些更深层次的。有时候会发生很多人写(最常见于流量大的网站),无用的数据会被写入文件。例如,info.file的内容如下-| 1 | Mukul | 15 |男|印度(n) | 2 |莱纳斯| 31 |男|芬兰(n)现在两个人同时注册。导致文件损坏-info.file-| 1 | Mukul | 15 |男|印度| 2 | Linus | 31 |男|芬兰| 3 | Rob | 27 |男|美国| Bill | 29 |男|美国在上面的例子中,当PHP将Rob的信息写入文件时,Bill只是开始写入。当然,我们不希望这种情况发生,所以我们来看看文件锁定:PHP代码:将代码复制如下: 1。php 2。3.$ file _ name=' data.dat4.5.$file_pointer=fopen($file_name,' r ');6.7.$lock=flock($file_pointer,LOCK _ SH);8.//我用的是4.0.2,9。所以我用LOCK_SH。10.您可能需要将其直接写成1.11.12.if ($ lock) {13.14。$ file _ read=fread ($ file _ pointer,file size($ file _ name));15.$lock=flock($file_pointer,LOCK _ UN);16.//如果版本低于PHP4.0.2,则为17。替换lock _ un18.19 . } 20.21 . fc lose($ file _ pointer);22.23.print '文件内容为$ file _ read ';24.25.26.在上面的例子中,如果两个文件,read.php和read2.php,想要访问该文件,它们都可以被读取,但是当一个程序需要写入时,它必须等到读取操作完成并且文件被释放。PHP代码:的复制代码如下。php 2。3.$ file _ name=' data.dat4.5.$file_pointer=fopen($file_name,' w ');6.7.$lock=flock($file_pointer,LOCK _ EX);8.//如果版本低于PHP4.0.2,则为9。替换lock _ ex 10.11 . if($ lock){ 12.13 . fwrite($ file _ pointer,'你想写什么');14.flock($file_pointer,LOCK _ UN);15.//如果版本低于PHP4.0.2,则为16。替换lock _ un17.18 . } 19.20 . fc lose($ file _ pointer);21.22.打印“数据成功写入文件”;23.24.25.虽然用‘w’模式覆盖文件,但我觉得不适用。

PHP代码:的复制代码如下。php 2。3.$ file _ name=' data.dat4.5.$file_pointer=fopen($file_name,' a ');6.7.$lock=flock($file_pointer,LOCK _ EX);8.//如果版本低于PHP4.0.2,则为9。替换lock _ ex 10.11 . if($ lock){ 12.13 . f SEK($ file _ pointer,0,seek _ end);14.//如果版本小于PHP4.0RC1,则为15。使用fseek ($ file _ pointer,filsize($ file _ name));16.17.fwrite($file_pointer,'你想写什么');18.flock($file_pointer,LOCK _ UN);19.//如果版本低于PHP4.0.2,20。替换lock _ un21.22 . } 23.24 . fc lose($ file _ pointer);25.26.打印“数据成功写入文件”;27.28.29.嗯.这和其他追加数据的操作有点不一样,就是FSEEK!确保文件指针在文件的末尾总是一个好习惯。如果是在Windows系统下,上面的文件前面需要加上' '。FLOCK: Flock()只有在文件打开后才会被锁定。在上面的列表中,文件只有在打开后才会被锁定。现在,文件的内容只是当时的内容,并不反映其他程序操作的结果。因此,fseek不仅应该用于向文件追加操作,还应该用于读取操作。这里的翻译可能不太准确,但我认为它是有意义的。关于模式:' r '-以只读模式打开,文件指针在文件头' r '-以读写模式打开,文件指针在文件头' w '-仅打开,文件指针在文件头,文件剪切为0字节,如果文件不存在,尝试建立文件' w '-以读写模式打开,文件指针在文件头,文件大小剪切为0字节,如果文件不存在,尝试构建文件' a '-以只写模式打开,文件指针在文件末尾,如果文件不存在, 尝试构建文件“a”-打开进行读写,文件指针在文件末尾,如果文件不存在,尝试构建文件。 顺便说一句,创建文件目录的代码复制如下: //创建一个类似的目录./././XXX/XXX . txt ' Function Create Dirs($ path,$ mode=0777)//mode 077 { $ Dirs=explode('/',$ path);$ pos=str pos($ path,'。);如果($pos===false) { //note:三个等号//未找到,则表示路径结束于dir not file $ sub mount=0;} else { $ sub mount=1;} for($ c=0;$c计数($ dirs)-$ sub mount;$ c){ $ this path=' ';for($ cc=0;$ cc=$ c;$cc ) { $thispath。=$dirs[$cc]。'/';} if(!file _ exists($ this path)){//print ' $ this path ';mkdir($thispath,$ mode);//mkdir函数创建目录} } }//调用比如createdirs('xxx/xxxx/xxxx ',);//$GLOBALS['dirseparator']用在了原来的函数中,我把它改成了'/' function recury _ MK dirs($ path,$ mode=0777)//mode 0777 {/$ GLOBALS[' dir separator ']$ dirs=explode($ GLOBALS[)。$ pos=str pos($ path,'。');如果($pos===false) { //note:三个等号//未找到,则表示路径结束于dir not file $ sub mount=0;} else { $ sub mount=1;}这些只是一些关于文件的基本操作代码,相信对初学者非常有用。请贴在这里,希望有吸引有价值建议的功能!

更多资讯
游戏推荐
更多+