如何关闭SplFileObject文件处理程序?

14

我正在使用SplFileInfo和SplFileObject在PHP中处理文件。但是当我尝试“重新打开”文件时,它会报错:

 SplFileObject::__construct(filemame): failed to open stream: Permission denied

我想在重新打开文件之前应该关闭它,但是我不知道如何操作。 SplFile* 没有 close 函数?!


1
我认为你没有打开文件,出现了权限被拒绝的错误。很明显是权限问题。 - xdazz
按照这里的说法将SplFileObject设置为null: http://www.php.net/manual/ru/class.splfileobject.php#113149 - u_mulder
我在使用Windows系统... 我不认为存在权限问题。而且,第一次打开并写入这些文件时是可以的... - Gilles
@u_mulder 谢谢...太明显了... - Gilles
但是要注意,如果您有多个指向同一个SplFileObject的变量,您必须确保将它们全部设置为null,以便销毁(和垃圾回收)对象。更多关于对象销毁的内容请参考http://www.stoimen.com/blog/2011/11/14/php-dont-call-the-destructor-explicitly/。 - Dimitry K
1个回答

23

为了关闭文件,您应该将SplFileObject设置为null

<?php

     $fileHandler = new SplFileObject('file.name');
     //now file.name is open

     $fileHandler = null;
     //file.name is closed.

     $fileHandler2 = new SplFileObject('file.name');
     //file.name is re-opened

?>

基本上,它会在 __destruct 中关闭吗? - Lucas Bustamante
这个答案完全正确,应该成为这个问题的被采纳答案。 - Adambean
所以 unset 会产生相同的效果吗? - Tarik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接