1.文件的打开和关闭(读文件中的内容,向文件中写内容)
读取文件中的内容
file_get_contents() //php5以上
<?php $filename="./test.txt"; //读出文件的内容 echo file_get_contents($filename); echo "<br>"; //向文件中写内容,返回写入到文件内数据的字节数 echo file_put_contents("./one.txt","123"); echo "<br>"; ?>
file();
readfiel();
不足:全部读取,不能读取指定的区域
读取部分字符:
fopen(URL,mode)
mode:
r 以只读的模式打开文件
r+ 比读的方式多了个写
w 以只写的方式打开,如果文件不存在,则创建这个文件,并写入数据,如果文件存在,会将源文件中的数据清除,再写入
w+ 比写的方式多了个读
a 以只写的方式打开,如果文件不存在,则创建这个文件,并写入文件,如果原文件有内容,但是不清除文件内容(追加)
a+ 比写的方式多了个读
b 以二进制模式打开文件(图片,电影)
t 以文本模式打开文件
fread() //读取指定长度的字符
fgetc() //一次从文件中读取一个字符
fgets() //一次从文件中读取一行字符
feof($file); 如果读取文件出错,或到文件结束,则返回真
写入文件内容
file_put_contents() //php5以上
如果文件不存在,则创建并写入内容
如果文件存在,则删除文件原来的内容,重新写入
不足:不能以追加的方式写
fopen()
fwrite() 别名fputs()
fwrite(文件的资源(fopen返回的),写的内容)
<?php //如果打开成功则返回资源,如果失败返回false $file=fopen("./test.txt","r"); //fread()从文件中读取指定长度的字符 echo fread($file,5)."<br>"; //从文件中每次读取一个字符 echo fgetc($file)."<br>"; //从文件中每次读取一行字符 echo fgets($file); //关闭文件资源 fclose($file); //读取远程文件 $file=fopen("http://www.163.com", "r"); $str=""; //feof();读取文件出错或文件内容读完,返回真 while(!feof($file)){ $str.=fread($file,1024); } echo $str; //关闭文件 fclose($file); $file=fopen("./test.txt","w"); //向文件中写内容 fwrite($file,"wwwwwww"); fclose($file); //以追加的方式写入 $file=fopen("./test.txt","a"); fwrite($file,"aaaaaaaaa"); fclose($file); ?>
本地文件
./test.txt
C:/appserv/www/index.php
远程文件
http://www.baidu.com等
2.文件内部指针
ftell(); 返回文件指针读/写的位置
int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] ) 在文件指针中定位
whence values are:
•SEEK_SET - 设定位置等于 offset 字节。
•SEEK_CUR - 设定位置为当前位置加上 offset。
•SEEK_END - 设定位置为文件尾加上 offset。
rewind(); 文件指针回到文件开始的位置
<?php $file=fopen("./test.txt","r"); //ftell();返回文件指针读写的位置 echo ftell($file)."<br>"; echo fread($file,10)."<br>"; echo ftell($file)."<br>"; //fseek(); 在文件指针中定位 fseek($file,-20,SEEK_END); echo ftell($file)."<br>"; echo fread($file, 20)."<br>"; //返回文件头部 rewind($file); echo ftell($file); fclose($file); ?>
用文件处理写的小小留言板
<?php
$mess="./file.txt";
if(isset($_POST["sub"])){
$strmess=$_POST["name"].'<l>'.$_POST["til"].'<l>'.$_POST["con"].'<l>'.time().'<n>';
write($mess,$strmess);
if(file_exists($mess)){
$con=read($mess);
//rtrim()去掉右边的字符 为了分隔,把最后一个<n>去掉
$con=rtrim($con,"<n>");
//explode()以<n>分隔字符串
$rows=explode("<n>", $con);
foreach ($rows as $row) {
//list()分割后的字符串赋值给相应的变量
list($username,$title,$content,$time)=explode("<l>", $row);
echo '<p>'.$username.'在'.date("Y-m-d H:i:s",$time).'说';
echo $title." ";
echo $content.'</p>';
}
}
}
//从文件中读数据
function read($fileName){
//
$file=fopen($fileName, "r");
//flock(,LOCK_SH)给文件加锁(读出数据)
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");
//flock()给文件加锁(写入数据)
if(flock($file,LOCK_EX)){
fwrite($file, $mess);
//释放锁定
flock($file,LOCK_UN);
}
fclose($file);
}
?>
<form action="8.php" method="post">
Name:<input type="text" name="name"><br>
Title:<input type="text" name="til"><br>
Body:<textarea name="con"></textarea><br>
<input type="submit" name="sub" value="提交"><br>
</form>