Ich hatte zum Beispiel einen Ordner mit dem Namen "Temp" und wollte alle Dateien aus diesem Ordner mit PHP löschen oder leeren. Kann ich das tun?
Antworten
Zu viele Anzeigen?Angenommen, Sie haben einen Ordner mit VIELEN Dateien, dann ist das Lesen aller Dateien und das anschließende Löschen in zwei Schritten nicht so leistungsstark. Ich glaube, die beste Methode zum Löschen von Dateien ist die Verwendung eines Systembefehls.
Zum Beispiel verwende ich unter Linux :
exec('rm -f '. $absolutePathToFolder .'*');
Oder so, wenn Sie eine rekursive Löschung wünschen, ohne eine rekursive Funktion schreiben zu müssen
exec('rm -f -r '. $absolutePathToFolder .'*');
die gleichen Befehle gibt es für jedes von PHP unterstützte Betriebssystem. Denken Sie daran, dass dies ein PERFORMER Weg ist, Dateien zu löschen. $absolutePathToFolder MUSS überprüft und gesichert werden, bevor dieser Code ausgeführt wird, und die Berechtigungen müssen erteilt werden.
見る readdir y entkoppeln .
<?php
if ($handle = opendir('/path/to/files'))
{
echo "Directory handle: $handle\n";
echo "Files:\n";
while (false !== ($file = readdir($handle)))
{
if( is_file($file) )
{
unlink($file);
}
}
closedir($handle);
}
?>
Der einfache und beste Weg, alle Dateien aus einem Ordner in PHP zu löschen
$files = glob('my_folder/*'); //get all file names
foreach($files as $file){
if(is_file($file))
unlink($file); //delete file
}
Ich habe den Quellcode von hier - http://www.codexworld.com/delete-all-files-from-folder-using-php/
Die Funktion unlinkr löscht rekursiv alle Ordner und Dateien im angegebenen Pfad, wobei sie sicherstellt, dass das Skript selbst nicht gelöscht wird.
function unlinkr($dir, $pattern = "*") {
// find all files and folders matching pattern
$files = glob($dir . "/$pattern");
//interate thorugh the files and folders
foreach($files as $file){
//if it is a directory then re-call unlinkr function to delete files inside this directory
if (is_dir($file) and !in_array($file, array('..', '.'))) {
echo "<p>opening directory $file </p>";
unlinkr($file, $pattern);
//remove the directory itself
echo "<p> deleting directory $file </p>";
rmdir($file);
} else if(is_file($file) and ($file != __FILE__)) {
// make sure you don't delete the current script
echo "<p>deleting file $file </p>";
unlink($file);
}
}
}
Wenn Sie alle Dateien und Ordner löschen wollen, in denen Sie dieses Skript platzieren, rufen Sie es wie folgt auf
//get current working directory
$dir = getcwd();
unlinkr($dir);
Wenn Sie nur die php-Dateien löschen wollen, rufen Sie es wie folgt auf
unlinkr($dir, "*.php");
Sie können auch jeden anderen Pfad zum Löschen der Dateien verwenden
unlinkr("/home/user/temp");
Dadurch werden alle Dateien im Verzeichnis home/user/temp gelöscht.