Есть ли способ удалить содержимое файла в php, есть ли у меня какая-либо команда php, я знаю, что unlink
но я не хочу удалять файл, а просто хочу удалить содержимое этого файла.
У меня есть файл, который я getCurrentDBSnap
при getCurrentDBSnap
функции getCurrentDBSnap
, он принимает файл из /home/test/incoming
folder и заполняет текущее состояние currentDB в файл с помощью fputcsv
и помещает обратно файл в /home/test/outgoing
.
В настоящее время файл остается во входящей папке, и когда я могу вызвать функцию getCurrentDBSnap
он будет принимать файл и переопределять его с последним состоянием БД.
Q: Мой вопрос в том, возможно ли это вместо перезаписывания файла, мы можем удалить содержимое файла после getCurrentDBSnap
, чтобы файл во входящей папке всегда был пустым?
Надеюсь, это имеет смысл 🙂
Попробуйте file_put_contents($filename, "")
;
или
unlink($filename); touch($filename);
ftruncate – Усекает файл до заданной длины
пример
$handle = fopen('/path/to/file', 'r+'); ftruncate($handle, 0); fclose($handle);
Но вы должны открыть файл.
Я не знаю, записывали ли вы содержимое в файл, но если вы используете fopen
и сначала вы fopen
файл, вы в основном делаете то, что делает w
режим.
Из документации :
'w': открыт только для записи; поместите указатель файла в начало файла и обрезайте файл до нулевой длины . Если файл не существует, попытайтесь его создать.
Поэтому я действительно не вижу необходимости в опорожнении, потому что вы, вероятно, будете использовать режим w
любом случае.
Вы должны только опорожнить его, если ваш код полагается на то, что этот файл пуст или если он каким-то образом связан с безопасностью.
Возможно, это work-arround, если exec разрешен .. для ex on linux:
<? shell_exec("rm -rf " . $filename " && touch ".$filename); ?>
Это приведет к удалению вашего файла, а затем создаст его снова, поэтому он «появится», что вы опустошили содержимое, это просто с моей головы, а не с тем, что должно быть возможно. Или, если вы используете Linux и имеете доступ к exec command Я бы использовал awk
или sed
(лучше), чтобы очистить файл
Вы не можете изменить файл, не открывая его. Самый простой способ сделать это – открыть его и усечь его, пока вы его открываете, что в PHP будет выглядеть так:
fclose(fopen($filename, "w+"));
Если вы собираетесь вызывать оболочку unix (это то, что делает вызов system ()), самый простой способ – перенаправить / dev / null в файл, поэтому в PHP это будет:
system(">$filename </dev/null");
Для этого подхода намного больше накладных расходов, но его можно обобщить и перевести на любой язык или среду, где у вас есть оболочка. В этой теме есть другие ответы, которые вы вызываете system () в rm, а затем прикоснитесь, чтобы воссоздать файл – помимо неатома, этот подход также пугает меня гораздо больше.
file_put_contents($file_name, "");
Это лучший и простой способ очистки содержимого файла без удаления файла.