繁体   English   中英

文件中特定位置的PHP覆盖

[英]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手册

是的,这是正常现象:

fopen($file, "w")

将文件指针放在文件的开头,并将文件截断为零长度。

fseek()

通常,它允许查找文件末尾。 如果随后写入数据,则在文件末尾与查找位置之间的任何未写入区域中进行读取都会产生值为0的字节 [..]如果您以附加(a或a +)模式打开文件,则无论文件位置如何,都将始终附加写入文件的任何数据,并且调用fseek()的结果将不确定。

您可能希望以非截断的写入模式打开文件(例如“ c”而不是“ a” )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM