计应134(实验班) 王锐
文件处理包读取、关闭、重写等。
1、打开/关闭文件
打开/关闭文件使用fopen()函数和fclose()函数。打开文件应格外认真,因为一不小心就有可能将文件内容全部删掉。
(1)打开文件
对文件进行操作时首先要打开文件,这是进行数据存取的第一步。在PHP中使用fopen()函数打开文件,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
$f_open=fopen("../file.txt.","rb"); //打开文件
...... //对文件进行操作
fclose($f_open) //操作完成后关闭文件
?>
2、读写文件
(1)从文件中读取数据
从文件中读取数据,可以读取一个字符、一行字串或整个文件,还可以读取指定长度的字串。
读取整个文件:readfile()、file和file_get_contents()
例1:
使用readfile()函数、file()函数和file_get_contents()函数分别读取文件tm.txt的内容,实例代码如下:
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="250" height="25" align="right" valign="middle" scope="col">使用readfile()函数读取文件内容:</td>
<td height="25" align="center" valign="middle" scope="col">
<?php readfile('tm.txt'); ?> </td>
</tr>
<tr>
<td height="25" align="right" valign="middle">使用file()函数读取文件内容:</td>
<td height="25" align="center" valign="middle">
<?php
$f_arr = file('tm.txt');
foreach($f_arr as $cont){
echo $cont."<br>";
}
?></td>
</tr>
<tr>
<td width="250" height="25" 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;
?></td>
</tr>
</table>
运行结果如图1.1所示:
图1.1读取整个文件
(2)读取一行数据:fgets()和fgetss()
fgets()函数
fgets()函数用于一次读取一行数据。函数语法如下:
string fgets(resource handle[, int length])
fgetss()函数
fgetss()函数是fgets()函数的变体,用于读取一行数据。同时,fgetss()函数会过滤掉被读取内容中的HTML和PHP标记。函数语法如下:
string fgetss(resource handle[, int length[, string allowable_tags]])
例2:
使用fgets()函数与fgetss()函数分别读取fun.php文件并显示出来。实例代码如下:
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td height="30" align="right" valign="middle" scope="col">使用fgets函数:</td>
<td height="30" align="center" valign="middle" scope="col">
<?php
$fopen = fopen('fun.php','rb');
while(!feof($fopen)){
echo fgets($fopen);
}
fclose($fopen);
?> </td>
</tr>
<tr>
<td height="30" align="right" valign="middle">使用fgetss函数:</td>
<td height="30" align="center" valign="middle">
<?php
$fopen = fopen('fun.php','rb');
while(!feof($fopen)){
echo fgetss($fopen);
}
fclose($fopen);
?> </td>
</tr>
</table>
运行结果如图2.1所示:
图2.1 fgets()函数和fgetss()函数的区别
读取一个字符:fgetc()
函数语法如下:string fgetc(resource handle)
读取指定长度的字串:fread()
函数语法如下:string fread(resource handle,int length)