主题:[讨论]文件定位问题
skyzwch
[专家分:50] 发布于 2008-01-13 11:11:00
<?
$filename = "d:\\123.txt";
$fp = fopen($filename,"r+");
fseek($fp,0,SEEK_SET);
fputs($fp,"t");
fclose($fp);
?>
我想在打开一个文件之后,在文件的开头加入一个字符,上面是我写的,我认为浏览器刷新几次,文件的开头就应该有几个t啊,可是我发现不管刷新多少次,开头就只有一个t,这是为什么?
回复列表 (共5个回复)
沙发
淡淡的 [专家分:2030] 发布于 2008-01-13 13:31:00
r+ 读写方式打开,将文件指针指向文件头。把r+换为a+试试,
a+ 读写方式打开,将文件指针指向文件末尾。
板凳
skyzwch [专家分:50] 发布于 2008-01-13 14:34:00
我是想在文件开头写入,并且不覆盖后面的内容
3 楼
淡淡的 [专家分:2030] 发布于 2008-01-13 20:20:00
前面我理解错了,以为你只是想“刷新几次就写几个t”,忽略了“是在文件的开头加入一个字符”。
我想之所以“就只有一个t”,原因是fseek($fp,0,SEEK_SET)每次都指定在同一个位置上写,是这样吧?
4 楼
skyzwch [专家分:50] 发布于 2008-01-13 20:52:00
那它为什么会覆盖第一个字符?我想让它不覆盖
5 楼
淡淡的 [专家分:2030] 发布于 2008-01-14 11:28:00
我用了一个就事论事的笨方法,不知是否有针对这个问题的现成的函数,如果以后你知道了,请发个帖子,谢谢
<?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"); //调出来看看
?>
我来回复