回 帖 发 新 帖 刷新版面

主题:[讨论]文件定位问题

<? 

$filename   =   "d:\\123.txt"; 
$fp   =   fopen($filename,"r+"); 
fseek($fp,0,SEEK_SET); 
fputs($fp,"t"); 
fclose($fp); 

?> 
我想在打开一个文件之后,在文件的开头加入一个字符,上面是我写的,我认为浏览器刷新几次,文件的开头就应该有几个t啊,可是我发现不管刷新多少次,开头就只有一个t,这是为什么?

回复列表 (共5个回复)

沙发

r+ 读写方式打开,将文件指针指向文件头。把r+换为a+试试,
a+ 读写方式打开,将文件指针指向文件末尾。

板凳

我是想在文件开头写入,并且不覆盖后面的内容

3 楼

前面我理解错了,以为你只是想“刷新几次就写几个t”,忽略了“是在文件的开头加入一个字符”。
我想之所以“就只有一个t”,原因是fseek($fp,0,SEEK_SET)每次都指定在同一个位置上写,是这样吧?

4 楼

那它为什么会覆盖第一个字符?我想让它不覆盖

5 楼

我用了一个就事论事的笨方法,不知是否有针对这个问题的现成的函数,如果以后你知道了,请发个帖子,谢谢
<?php
$filename="1.txt";         //1.txt上最初写上"abcde",以便比对
$fp=fopen($filename,"r+"); //指针在文件头
$row=fgets($fp,1024);      //读第一行,这时指针在第一行尾
$row="t".$row;             
fseek($fp,0,SEEK_SET);     //把指针移到文件头
fputs($fp,$row); 
fclose($fp); 
require("1.txt");          //调出来看看
?>

我来回复

您尚未登录,请登录后再回复。点此登录或注册