


Beispiele für die Verwendung der Rekursion zum Kopieren, Löschen und Anzeigen der Größe von Ordnern in PHP
In diesem Artikel wird hauptsächlich die rekursive PHP-Implementierung von Ordnerkopier-, Lösch- und Anzeigegrößenoperationen vorgestellt. Er analysiert den rekursiven PHP-Algorithmus in Kombination mit den allgemeinen PHP-Ordneroperationsfunktionen, um das Kopieren, Löschen, Anzeigen und andere verwandte Implementierungen von Ordnern zu implementieren Tipps in Form von Beispielen finden Freunde, die sie benötigen, unter
Dieser Artikel beschreibt das Beispiel der rekursiven Implementierung von Ordnerkopier-, Lösch- und Anzeigegrößenoperationen. Teilen Sie es allen als Referenz mit. Die Details lauten wie folgt:
Obwohl PHP Funktionen für Dateioperationen wie Dateigröße, Kopieren und Aufheben der Verknüpfung bereitstellt, bietet es keine Funktionen für Ordneroperationen wie Verzeichnisgröße, Kopierverzeichnis usw. und rmdirs (rmdir kann nur leere Verzeichnisse löschen). Daher können diese Funktionen nur manuell geschrieben werden. Der Haupttrick besteht darin, das Problem Schicht für Schicht durch Rekursion zu zerlegen, bis es in das kleinste Teilproblem zerlegt ist, das direkt gelöst werden kann.
Ordnergröße anzeigen
Da Ordner keine Größe haben, bezieht sich die Ordnergröße normalerweise auf die Ordnergröße, um genau zu sein aller Dateien in . Sie müssen also nur die Ordner Schicht für Schicht durchsuchen, die Größe der in jeder Schicht enthaltenen Dateien zählen und schließlich die Ergebnisse aus dem tiefsten Ordner zum Zusammenführen zurückgeben.
/** * 文件夹大小 * @param $path * @return int */ function dirsize($path) { $size = 0; $handle = opendir($path); while (($item = readdir($handle)) !== false) { if ($item == '.' || $item == '..') continue; $_path = $path . '/' . $item; if (is_file($_path)) $size += filesize($_path); if (is_dir($_path)) $size += dirsize($_path); } closedir($handle); return $size; }
Ordner kopieren
Dateien können kopiert werden, Ordner können jedoch nicht kopiert werden (aber erstellt werden kann), wenn Sie den Effekt des Kopierens eines Ordners erzielen möchten, müssen Sie einen neuen Ordner mit derselben Verzeichnisstruktur wie der ursprüngliche Ordner erstellen und dann die Dateien entsprechend der ursprünglichen Verzeichnisstruktur in den neuen Ordner kopieren. Gemäß der rekursiven Idee ist es nicht erforderlich, zu Beginn eine vollständige Verzeichnisstruktur zu generieren. Sie müssen lediglich das aktuelle Verzeichnis durchlaufen, feststellen, dass der Ordner nicht vorhanden ist, ihn erstellen und dann die Datei in den entsprechenden Ordner kopieren.
/** * 复制文件夹 * @param $source * @param $dest */ function copydir($source, $dest) { if (!file_exists($dest)) mkdir($dest); $handle = opendir($source); while (($item = readdir($handle)) !== false) { if ($item == '.' || $item == '..') continue; $_source = $source . '/' . $item; $_dest = $dest . '/' . $item; if (is_file($_source)) copy($_source, $_dest); if (is_dir($_source)) copydir($_source, $_dest); } closedir($handle); }
Ordner löschen
rmdir kann nur leere Ordner löschen, durch Aufheben der Verknüpfung können jedoch Dateien gelöscht werden . Daher kam die Idee auf, einen Ordner zu löschen. Löschen Sie zunächst alle Dateien im Verzeichnis, indem Sie die Verknüpfung aufheben, und löschen Sie dann die verbleibenden leeren Ordner, indem Sie rmdir verwenden. Die Logik der rekursiven Verarbeitung besteht darin, alle Dateien und Ordner im aktuellen Verzeichnis zu finden, alle darin enthaltenen Dateien zu löschen und dann das Verzeichnis der nächsten Ebene zu durchlaufen, um alle Dateien zu löschen ... bis zum Verzeichnis der letzten Ebene und dann den gesamten Ordner hat keine Dateien (Aber der Ordner ist noch da), zu diesem Zeitpunkt beginnt die Rekursion zurückzukehren, und jedes Mal, wenn sie zu einer Ebene zurückkehrt, werden alle leeren Verzeichnisse auf dieser Ebene gelöscht. Wenn sie zur obersten Ebene zurückkehrt, endet die Rekursion , und alle Dateien und Verzeichnisse werden ebenfalls gelöscht.
/** * 删除文件夹 * @param $path * @return bool */ function rmdirs($path) { $handle = opendir($path); while (($item = readdir($handle)) !== false) { if ($item == '.' || $item == '..') continue; $_path = $path . '/' . $item; if (is_file($_path)) unlink($_path); if (is_dir($_path)) rmdirs($_path); } closedir($handle); return rmdir($path); }
Ordner ausschneiden
Umbenennen ist ein Sonderfall der PHP-Dateisystemfunktion kann sowohl Dateien als auch Ordner umbenennen. Wenn Sie einen anderen Pfad für die umbenannte Datei übergeben, wird sie zur Ausschneidefunktion, einem kleinen, aber schönen Beispiel für Dateifunktionen.
/** * @param $oldname 必需。规定要重命名的文件或目录。 * @param $newname 必需。规定文件或目录的新名称。 * @param $context 可选。规定文件句柄的环境。 */ rename($oldname,$newname,$context);
Das obige ist der detaillierte Inhalt vonBeispiele für die Verwendung der Rekursion zum Kopieren, Löschen und Anzeigen der Größe von Ordnern in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
