有没有办法删除php中的文件内容,我们有没有这样做的php命令,我知道unlink
但是我不想删除文件而只是想删除该文件的内容。
我有一个文件,我在调用getCurrentDBSnap
函数时传递,它从/home/test/incoming
文件夹中获取文件并使用fputcsv
将currentDB表状态填充到文件中并放回文件到/home/test/outgoing
。
当前文件保留在传入文件夹中,当我可以调用函数getCurrentDBSnap
时,它将获取文件并覆盖最新的DB状态。
问:我的问题是,是否有可能而不是覆盖文件,我们可以在getCurrentDBSnap
之后删除文件内容,以使传入文件夹中的文件始终为空?
希望有道理:)
答案 0 :(得分:13)
答案 1 :(得分:5)
ftruncate - 将文件截断为给定长度
实施例
$handle = fopen('/path/to/file', 'r+');
ftruncate($handle, 0);
fclose($handle);
但你必须打开文件。
答案 2 :(得分:2)
我不知道您是否已将内容写入文件,但如果您使用fopen
并先清空文件,那么您基本上正在执行w
模式正在执行的操作。< / p>
'w':仅限写作;将文件指针放在文件的开头,将文件截断为零长度。如果该文件不存在,请尝试创建它。
所以我真的认为没有必要先清空它,因为你可能会使用w
模式。
如果您的代码依赖于此文件为空或者某种安全相关的事实,您应该只清空它。
答案 3 :(得分:0)
如果允许执行exec,也许这是工作原因..对于Linux上的ex:
<?
shell_exec("rm -rf " . $filename " && touch ".$filename);
?>
这将删除你的文件,然后再次创建它,所以它会“显示”你清空了内容,这只是我的头脑,不是应该使用的东西..或者如果使用linux和有权访问exec命令我使用awk
或sed
(更好)来清空文件
答案 4 :(得分:0)
如果不打开文件,则无法修改文件。最简单的方法是打开它并在打开它时截断它,在PHP中看起来像这样:
fclose(fopen($filename, "w+"));
如果您要调用unix shell(这是system()调用的那个),最简单的方法是将/ dev / null重定向到该文件,因此在PHP中将是:
system(">$filename </dev/null");
这种方法有更多的开销,但它可以推广并转换为任何有shell的语言或环境。在这个线程上还有其他答案让你调用system()到rm然后触摸来重新创建文件 - 除非是非原子的,这种方法也让我害怕得多。
答案 5 :(得分:0)
file_put_contents($file_name, "");
这是清除文件内容而不删除文件的最佳和最简单的选项。