PHP:fopen似乎在使用filesize()后没有用?

时间:2014-01-14 10:19:04

标签: php fopen filesize

这里的初学者需要PHP帮助。

我试图用if语句将一些字符串写入(或追加)到空的.txt文件中。
然后还打开文件但由于0长度问题而失败。

$filename = 'sometext.txt';  //empty text file
$size = filesize($filename);
if( $size <= 0 ) {
    $handle = fopen($filename, 'a');
    fwrite($handle, 'blah blah blah...');
    fclose($handle);
}

$handle = fopen($filename, 'r');
$current = fread($handle,filesize($filename));

这不会让我写或附加到$filename
但是,如果我评论if语句,那么它是有效的。

为什么会这样?

3 个答案:

答案 0 :(得分:1)

为什么在追加模式下打开文件,如果你知道,文件中没有包含的内容? 您还应该更改您的fwrite行,因为您使用了错误的句柄

$filename = 'sometext.txt';  //empty text file
$size = filesize($filename);
if( $size <= 0 ) {
    $handle = fopen($filename, 'w');
    fwrite($handle, 'blah blah blah...');
    fclose($handle);
}

$handle = fopen($filename, 'r');
$current = fread($handle,filesize($filename));

如果要将某些内容附加到现有文件,则必须将比较语句更改为>=

答案 1 :(得分:0)

您要问的是文件大小是<还是= 0。如果文件大小是例如1字节,则永远不会在if-section中到达fopen / fwrite / fclose调用。

如果您对$size = filesize($filename)发表评论,则未定义$ size。在未定义的PHP中,0相等,您到达if-section。那就是它起作用的原因。

答案 2 :(得分:0)

试试这个......

$my_file = 'emptytxt.txt';
$handle = fopen($my_file, 'a') or die('Cannot open file:  '.$my_file);
$size = filesize($my_file);
$data = 'New data line 1';
if($size <= 0)
{
fwrite($handle, $data);
}
fclose($handle);