[英]PHP Overwriting at a specific location in a file
我试图在已经有一些内容的文件中的特定位置写入文本。 写入后,我发现该文件被截断为文本大小加上fseek位置和值为0的第一个字符的大小。这是正常现象还是我丢失了某些内容? 我想提到的是,我试图避免将文件加载到内存中并将其写回。
$file = fopen("text.txt","w");
fseek($file,3);
fwrite($file,"Hello");
fclose($file);
您需要以c
模式打开文件,否则它将在fopen
被截断:
$file = fopen("text.txt","c");
有关所有文件打开模式及其确切功能的文档,请参见http://php.net/manual/de/function.fopen.php 。 另请参见http://www.php.net/manual/zh/function.fseek.php手册
是的,这是正常现象:
将文件指针放在文件的开头,并将文件截断为零长度。
fseek()
:
通常,它允许查找文件末尾。 如果随后写入数据,则在文件末尾与查找位置之间的任何未写入区域中进行读取都会产生值为0的字节 。 [..]如果您以附加(a或a +)模式打开文件,则无论文件位置如何,都将始终附加写入文件的任何数据,并且调用fseek()的结果将不确定。
您可能希望以非截断的写入模式打开文件(例如“ c”而不是“ a” )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.