这里的初学者需要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语句,那么它是有效的。
为什么会这样?
答案 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);