为什么PHP在一个文件中混合使用两个fopen句柄?
在一个文件上测试两个为什么PHP在一个文件中混合使用两个fopen句柄?,php,file-io,fopen,handle,Php,File Io,Fopen,Handle,在一个文件上测试两个fopen()句柄时,我注意到句柄或通道混合,调用fread()时文件内容为空。一个句柄是读的,一个句柄是写的 示例代码: $rh = fopen('existingfilewithcontent.txt', 'r'); $wh = fopen('existingfilewithcontent.txt', 'w'); echo fread($rh, 1000); fclose($rh); fclose($wh); // file is now blank 这是在Linux和
fopen()
句柄时,我注意到句柄或通道混合,调用fread()
时文件内容为空。一个句柄是读的,一个句柄是写的
示例代码:
$rh = fopen('existingfilewithcontent.txt', 'r');
$wh = fopen('existingfilewithcontent.txt', 'w');
echo fread($rh, 1000);
fclose($rh);
fclose($wh);
// file is now blank
这是在Linux和Windows上测试的
我在PHP文档中找不到关于它的任何内容
请不要问我为什么要在一个文件上有两个句柄,因为这不是问题所在
谢谢打开一个文件进行写入是破坏性的 手册上说: 'w'-仅开放用于写作;将文件指针放在文件的开头,并将文件截断为零长度。如果文件不存在,请尝试创建它 您可能想要: 'r+'-开放阅读和写作;将文件指针放在文件的开头 或 “a+”-开放阅读和写作;将文件指针放在文件末尾。如果文件不存在,请尝试创建它。在此模式下,fseek()仅影响读取位置,写入操作始终附加
参见手册:啊,我真蠢,没听清楚。我假设在调用
fwrite()
之前不会发生截断。。谢谢你!