PHP文件操作之读写

PHP中对文件的操作:创建、读取、上传、编辑。 PHP提过了多种相关的函数。

1、readfile()

int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

参数:

  1. filename:文件名;
  2. use_include_path:是否也在include_path中搜索文件;
  3. context:规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

返回值:返回从文件中读入的字节数。如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息。 
示例: 
1.php和new.txt在同一个文件夹

1.php内容:

<?php
echo @readfile("new.txt");
?>
  • 1
  • 2
  • 3

new.txt内容:

It's a new file.

运行1.php结果:

It's a new file.16

2、fopen()

resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource$context ]] )

参数:

  1. filename:如果 filename 是 “scheme://…” 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。;
  2. mode:指定了所要求到该流的访问类型;
  3. use_include_path:是否也在include_path中搜索文件;
  4. context:规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

返回值: 
成功时返回文件指针资源,如果打开失败,本函数返回 FALSE。 
注:文件访问类型表

mode说明
“r” 只读方式打开,将文件指针指向文件头
“r+” 读写方式打开,将文件指针指向文件头
“w” 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
“w+” 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
“a” 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
“a+” 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
“x” 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给底层的 open(2) 系统调用指定 O_EXCL
“x+” 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给底层的 open(2) 系统调用指定 O_EXCL

3、fread()

string fread ( resource $handle , int $length ) 
从文件指针 handle 读取最多 length 个字节

参数:

  1. head:文件系统指针,是典型地由 fopen() 创建的 resource(资源);
  2. length:最多读取 length 个字节。

返回值: 
返回所读取的字符串, 或者在失败时返回 FALSE。

4、fclose()

bool fclose ( resource $handle ) 
将指定文件关闭(好习惯,减少服务器资源占用)。文件指针必须有效,并且是通过 fopen() 或 fsockopen() 成功打开的。

5、fgets()

string fgets ( resource $handle [, int $length ] ) 
从文件中读取一行数据。从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

6、feof()

bool feof ( resource $handle ) 
测试文件指针是否到了文件结束的位置。

7、fgetc()

string fgetc ( resource $handle ) 
从文件中读取单个字符。

8、fwrite()

int fwrite ( resource $handle , string $string [, int $length ] )

参数:

  1. handle:文件系统指针,是典型地由 fopen() 创建的 resource(资源);
  2. string:要写入的字符串;
  3. length:如果指定了 length,当写入了 length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况。

返回值: 
fwrite() 返回写入的字符数,出现错误时则返回 FALSE 。

9、一个超级简单的评论墙

<html>
<head>
<title>评论墙</title>
</head>
<body>
<!--评论表单-->
<form method="post"  action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>">
昵称:<input type="text" name="name"></input>
<br />
评论:<textarea rows='5' cols='19' name="comment"></textarea>
<br />
<input type="submit" name="submit" value="提交">
</form>
<!--保存评论到文件-->
<?php
/**
文件的读写测试
*/
if($_SERVER['REQUEST_METHOD']=='POST'){
#打开文件
$fname="D:\\comment.txt";
$file=fopen($fname,"a+");
#写入数据
$name=@$_POST['name'];
$comment=@$_POST['comment'];
$str=$name."`".$comment."\r\n";
fwrite($file,$str);
#关闭文件
fclose($file);
}
?>
<!--显示评论内容-->
<table cellpadding="4" >
<tr>
<td><b>昵称</b></td>
<td><b>评论</b></td>
</tr>
<?php
$fname="D:\\comment.txt";
$file=fopen($fname,"r");
while(!feof($file)){
    $line=fgets($file);
    $arr=explode("`",$line);
    echo @"<tr><td>$arr[0]</td><td>$arr[1]</td></tr>";
}
fclose($file);
?>
</table>

</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
 
 
posted @ 2016-12-26 17:43  天涯海角路  阅读(162)  评论(0)    收藏  举报