【问题标题】:Can this fopen code be improved这个fopen代码可以改进吗
【发布时间】:2011-10-06 08:51:39
【问题描述】:

我看到这段代码首先创建文件,关闭它,然后用'a' 打开它,写入它,然后关闭它。有没有办法简化它。这个想法是,如果文件名存在,它需要被覆盖。我也不明白unset 的意思。有必要吗?

$fp = fopen($file_name, 'w');
fclose($fp);
unset($fp);
$fp = fopen($file_name, 'a');
fputs($fp, "sometext");
fclose($fp);
unset($fp);

【问题讨论】:

    标签: php file fopen


    【解决方案1】:

    来自 php.net,在 fopen 中的 'w' 模式下: 只为写入而打开;将文件指针放在文件的开头并将文件截断为零长度。如果文件不存在,请尝试创建它。

    换句话说,打开写入,并根据需要覆盖或创建。无需使用附加模式。

    $fp = fopen($file_name, 'w');
    fputs($fp, "sometext");
    fclose($fp);
    

    【讨论】:

    • "思路是如果文件名存在就需要覆盖。"
    • @zerkms 没错,一开始,我正在创建它并覆盖任何可能具有相同名称的东西。然后从那以后,我只是在写文件。
    • 对不起,我该睡觉了。您只需要使用 'w' 调用 fopen 即可。请参阅php.net/manual/en/function.fopen.php 并向下滚动到“模式”部分。
    【解决方案2】:
    file_put_contents($file_name, 'sometext');
    

    而且,不,unset() 在您的情况下毫无意义。

    【讨论】:

    • 如果文件不存在,那么文件放置内容会创建文件吗?
    • @sameold: 是的:“如果文件名不存在,则创建文件。否则,将覆盖现有文件,除非设置了 FILE_APPEND 标志。”
    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2020-10-22
    相关资源
    最近更新 更多