是否有可能做“如果文件存在然后追加,否则创建新文件”比这短

时间:2011-11-17 10:52:54

标签: php

我有以下代码,但我试图将它缩短为几乎一两行,因为我确定我对if的评估是不需要的,无论如何,下面的代码可以缩短为甚至单数线?

 if(file_exists($myFile))
    {
        $fh = fopen($myFile, 'a');
        fwrite($fh, $message."\n");
    }
    else
    {
        $fh = fopen($myFile, 'w');
        fwrite($fh, $message."\n");
    }

11 个答案:

答案 0 :(得分:51)

if (file_exists($myFile)) {
  $fh = fopen($myFile, 'a');
  fwrite($fh, $message."\n");
} else {
  $fh = fopen($myFile, 'w');
  fwrite($fh, $message."\n");
}
fclose($fh);

==

if (file_exists($myFile)) {
  $fh = fopen($myFile, 'a');
} else {
  $fh = fopen($myFile, 'w');
} 
fwrite($fh, $message."\n");
fclose($fh);

==

$fh = fopen($myFile, (file_exists($myFile)) ? 'a' : 'w');
fwrite($fh, $message."\n");
fclose($fh);

==(因为a检查文件是否存在,如果不存在则创建文件

$fh = fopen($myFile, 'a');
fwrite($fh, $message."\n");
fclose($fh);

==

file_put_contents($myFile, $message."\n", FILE_APPEND);

...当然,file_put_contents()只有在你对给定句柄执行的唯一写操作时才会更好。如果您在同一个文件句柄上稍后调用fwrite(),那么最好使用@Pekka的答案。

答案 1 :(得分:15)

嗯......为什么? a已经开箱即用。

  

仅供写作;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。

答案 2 :(得分:4)

$method = (file_exists($myFile)) ? 'a' : 'w';
$fh = fopen($myFile,$method);
fwrite($fh, $message."\n");

答案 3 :(得分:3)

fopen()。模式a只需要你。

答案 4 :(得分:2)

$fh = file_exists($myFile) ? fopen($myFile, 'a') : fopen($myFile, 'w');
fwrite($fh, $message."\n");

答案 5 :(得分:2)

$fh = (file_exists($myFile)) ? fopen($myFile,'a') : fopen($myFile,'w');
fwrite($fh, $message."\n");

答案 6 :(得分:1)

附加模式已经完成了您所描述的内容。来自fopen的PHP手册页:

  

'a':仅供写作;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。

答案 7 :(得分:1)

根据php手册,这应该足够了。请参阅description of "a"

fopen($myFile, "a");
fwrite($fh, $message."\n");

答案 8 :(得分:0)

我相信a(追加)模式已经存在...如果存在则附加,否则创建新

fopen($myFile, "a");

答案 9 :(得分:0)

$method = (file_exists($myFile)) ? 'a' : 'w';

$fh = fopen($myFile,$method);

fwrite($fh, $message."\n");

不是$ myFile包含绝对/相对路径..?

答案 10 :(得分:0)

使用SPL / Standard PHP Library

# addfile.php
$file = new \SplFileObject( __DIR__.'/foo.txt', 'a' );
var_dump( file_exists( $file->getFilename() ) );

$ php addfile.php
bool(true)