php开发之文件系统

WBOY
Release: 2016-06-23 13:37:15
Original
1074 people have browsed it

1,打开/关闭文件
打开/关闭文件分别使用fopen()函数和fclose()函数。打开文件时应该特别注意,一不小心就有可能将文件内容全部删掉。
(1) 打开文件
fopen()函数,语法格式如下:
resource fopen(string filename,string mode [,bool use_include_path]);
参数filename 是要打开的包含路径的文件名,可以是相对路径也可以是绝对路径。参数mode是打开方式,如下表所示:

(2)关闭文件
对文件的操作结束后应该关闭文件,否则可能引起错误。在php中使用fclose()函数关闭文件,语法如下:
bool fclose(resource handle);
该函数将指向handle的文件关闭,如果成功返回true ,否则返回false。其中文件指针必须是有效的,并且是通过fopen()函数成功打开的文件。
实例代码如下:

<?php$_open =fopen("../fiel.txt","rb");   //打开文件...                             //对文件的操作fclose($_open);                //关闭文件?>
Copy after login

2,读写文件
从文件中读取数据,可以读取一个字符,一行字符串,或者整个文件。还可以是任意长度的字符串。
(1)读取整个文件:readfile(),file()和file_get_contents()函数。
a, readfile()函数
readfile()函数用于读入一个文件,并将其写入到输出缓冲,如果出现错误,则返回false。函数语法如下:
int readfile(string filename);
注意:
使用readfile(0函数不需要打开/关闭文件,只需要输入文件的路径即可。也不需要echo/print输出语句。

b, file() 函数
file()函数也可以读取整个文件的数据,但是file()函数将文件中的内容,按行存储到数组中。包括换行符在内。如果失败则返回false。语法格式如下:
array file(string filename);

c, file_get_contents()函数
该函数将文件内容读入一个字符串。如果有offset和maxlen参数,将在参数offset所指定位置开始读取长度为maxlen 的内容。如果读取失败,则返回false。语法格式如下:
sting file_get_contents(string filename[,int offset[,int maxlen]]]);
该函数适用于二进制对象。是将整个文件的内容读取到一个字符串的首选方法。

示例代码如下:

<table width ="500" border ="1" cellspacing ="0" cellpadding ="0"><tr> <td width ="253" height ="100" align ="right" valign ="middle" scope ="col">使用readfile()函数读取文件内容: </td> <td width ="241" height ="100" align ="center" valign ="middle" scope ="col">  <?php readfile("tm.txt"); echo "\n"; ?> </td></tr><tr> <td height ="100" align ="right" valign ="middle">使用file()函数读取文件的内容:</td> <td height ="100" align ="center" valign ="middle"> <?php $f_arr =file("tm.txt"); foreach($f_arr as $count){ echo $count."\n"; } ?> </td></tr><tr>   <td width ="250" height ="100" align ="right" valign ="middle" scope ="col">使用file_get_contents()函数读取文件内容:</td>   <td height ="25" align ="center" valign ="middle" scope ="col">   <?php $f_chr =file_get_contents('tm.txt'); echo $f_chr."\n"; ?>   </td></tr></table>
Copy after login

运行结果如下:

(2) 读取一行数据:fgets()和fgetss()
fgets()函数用于一次性读取一行数据,语法如下:
string fgets(int handle[,int length]);
参数handle是被打开的文件,参数length是要读取的数据的长度。函数能够实现从handle中读取最大长度为length-1个字节的字符串。在遇到换行符,EOF或者读取了length-1个字节后停止。如果忽略length参数,那么读取直到行结束。

fgetss()函数是fgets()函数的变体,用于读取一行数据。同时,fgets()函数会过滤掉读取内容中的html 和php标记。
语法格式如下:
string fgetss(resource handle[,int length[,string allowable_tags]])
该函数能够从文件中过滤掉任何html和php标记。可以使用allowable_tags参数来控制哪些标记不被过滤掉。
下面为一个用到fgets()函数和fgetss()函数的例子,代码如下:

<table border ="1"><tr><td align ="right" valign ="middle" scope ="col">使用fgets()函数:</td><td align ="center" valign ="middle" scope ="col"><?php $open =fopen('jacktest.php', 'rb'); while (!feof($open)){ echo fgets($open); } fclose($open); ?></td></tr><tr><td align ="right" valign ="middle" scope ="col">使用fgetss()函数:</td><td align ="center" valign ="middle" scope ="col"><?php $handle =fopen('jacktest.php', 'rb'); while (!feof($handle)){ echo fgetss($handle); } fclose($handle); ?></td></tr></table>
Copy after login

运行结果如下:

(3) fgetc() 读取一个字符
在对某一个字符进行查找,替换时需要有针对性的对某一个字符进行读取。语法格式如下:
string fgetc(resource handle)
示例代码如下:

<?php $handle =fopen('123.txt', 'rb'); while (false !=($chr =fgetc($handle))){ echo $chr."<br>"; } fclose($handle); ?>
Copy after login

123.txt 文件内容如下:

运行结果如下:

(4) fread() 读取任意长度的字符串
语法格式如下:
string fread(resource[,int length])
示例代码如下:

 <?php $handle =fopen('123.txt', 'rb'); echo fread($handle, 40)."<br>"; //读取四十个字节的字符串。 fclose($handle); ?> 
Copy after login

123.txt 的内容如下:

运行结果如下:

(5) 将数据写入文件
在php中通过fwrite() 和file_put_contents()函数想文件中写入数据。
fwrite()语法如下:
int fwrite(resource handle,string string[,int length])
该函数把string 写入到handle处,如果制定了长度length,则写入length个字节后停止。如果没有就把string的内容全部写入。
file_put_contents()函数时php5新增的函数。语法如下:
int file_put_contents(string filename,string data[,int flags])
filename 位要写入数据的文件的路径名。
data为要写入的数据
flags 可以是FILE_INCLUDE_PATH,FILE_APPEND或LOCK_X,LOCK_EX为独占锁定。
下面分别比较一下。使用函数fopen(), fwrite(),fclose()和file_put_contents()之间的区别。
示例代码如下:

<?php $filepath ="1.txt"; $str ="今天是个好天气,心情也好"; echo "用fwrite()函数写入文件:<br>"; $fopen =fopen($filepath, "wb") or die("文件不存在"); fwrite($fopen, $str); fclose($fopen); readfile($filepath); echo "用file_put_contents()函数来写入文件:<br>"; $str1 ="这是用file_put_contents()函数来写入文件1111"; file_put_contents($filepath, $str1); readfile($filepath); ?>
Copy after login

运行结果如下:

2,对文件的操作
常用的文件操作函数如下表:

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template