fseek($file, SEEK_END) + fwrite() 写入文件开头而不是结尾
fseek($file, SEEK_END) + fwrite() writing to beginning of file instead of end
我正在尝试将字符串附加到包含 json 字符串的文件。
为此,我必须删除最后一个括号“]”,并将新字符串追加到文件末尾。
这就是我尝试这样做的方式:
$fh = fopen($target_file, 'r+') or die("can't open file"); // opens file
$stat = fstat($fh); // get data from statt struct
ftruncate($fh, $stat['size']-1); // remove last char
fseek($fh, SEEK_END); // move file pointer to end
fwrite($fh, $append_str); // write new string
fclose($fh); // close
但是,$append_str 被写入文件的开头。
append 操作应该有什么不同?
(p.s.: 使用 wamp 服务器)
只需使用 a+,它会将文件指针设置在文件末尾。
我看到第二个参数被省略了,这不是 fseek
的工作方式。
要将文件指针设置到文件末尾,您还需要设置偏移量参数:
fseek($fh, 0, SEEK_END);
我正在尝试将字符串附加到包含 json 字符串的文件。 为此,我必须删除最后一个括号“]”,并将新字符串追加到文件末尾。 这就是我尝试这样做的方式:
$fh = fopen($target_file, 'r+') or die("can't open file"); // opens file
$stat = fstat($fh); // get data from statt struct
ftruncate($fh, $stat['size']-1); // remove last char
fseek($fh, SEEK_END); // move file pointer to end
fwrite($fh, $append_str); // write new string
fclose($fh); // close
但是,$append_str 被写入文件的开头。 append 操作应该有什么不同? (p.s.: 使用 wamp 服务器)
只需使用 a+,它会将文件指针设置在文件末尾。
我看到第二个参数被省略了,这不是 fseek
的工作方式。
要将文件指针设置到文件末尾,您还需要设置偏移量参数:
fseek($fh, 0, SEEK_END);