PHP文件系统-文件指针
一、fopen — 打开文件或者 URL
'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
'x+' 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
二、程序实例
1、往文件中写内容
$file=fopen("./test.txt", "a"); //如果打开文件成功返回资源,如果失败返回false
for($i=0; $i<100; $i++)
fwrite($file, "www.baidu{$i}.com\n");
fclose($file); //关闭文件资
2、读取远程文件的方法
$file=fopen("http://www.163.com", "r"); //如果打开文件成功返回资源,如果失败返回false
$str="";
while(!feof($file)){ //feof()当文件指针读到文件的尾部的判断
$str.=fread($file, 1024);
}
echo $str;
fclose($file); //关闭文件资
3、文件指针位置控制
$file=fopen("./test.txt", "r"); //如果打开文件成功返回资源,如果失败返回false
echo ftell($file)."<br>"; //返回当前指针的位置
echo fread($file, 10)."<br>"; //读取当前指针后的10个字节,读完了指针是会移动的。往后移10个字节
echo ftell($file)."<br>";
echo fread($file, 10)."<br>";
echo ftell($file)."<br>";
fseek($file,100, SEEK_CUR); //从当前的指针位置往后移动100个字节
echo ftell($file)."<br>";
echo fread($file, 10)."<br>";
echo ftell($file)."<br>";
fseek($file,-20, SEEK_END); //指针移到文件倒数的20个字节
echo fread($file, 20)."<br>";
echo ftell($file)."<br>";
rewind($file); //回到文件头部
echo ftell($file)."<br>";
echo fread($file, 20)."<br>";
fclose($file); //关闭文件资源
4、用文本存储数据的简单留言本
<?php
$mess="data.txt";
if(isset($_POST["sub"])){
$strmess=$_POST["username"].'<l>'.$_POST['tit'].'<l>'.$_POST["con"].'<l>'.time()."<n>";
write($mess, $strmess);
if(file_exists($mess)) {
$con=read($mess);
$con=rtrim($con, "<n>"); //去掉后面的<n>
$rows=explode("<n>", $con);
foreach($rows as $row){
list($username, $tit, $content, $time)=explode("<l>", $row);
echo '<p><b>'.$username.'</b>在<font color="red">'.date("Y-m-d H:i:s", $time).'</font>说:';
echo '<i>'.$tit.'</i> ';
echo '<u>'.$content.'</u></p>';
}
}
}
function read($fileName){
$file=fopen($fileName, "r");
if(flock($file, LOCK_SH)){ //加入文件锁,防止一个文件不被同时多人操作
$con=fread($file, filesize($fileName));
flock($file, LOCK_UN);
}
fclose($file);
return $con;
}
function write($fileName, $mess){
$file=fopen($fileName, "a");
if(flock($file, LOCK_EX)){
fwrite($file, $mess);
flock($file, LOCK_UN);
}
fclose($file);
}
?>
<form action="one.php" method="post">
username: <input type="text" name="username"> <br>
title: <input type="text" name="tit"><br>
body: <textarea name="con"></textarea><br>
<input type="submit" name="sub" value="message">
</form>