[Playlisten] [Impressum und Datenschutzerklärung]

07.1.2 Rekursion über Verzeichnisse


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

an der Stelle wollte ich einmal erzählenwann man Rekursionwirklich brauchtRekursion heißt eine Funktion ruft sich selbst aufdas hier ist die Stelleich stelle an jener welcherFunktion sich sinnvollerweise selbst aufrufen solltewenn man Verzeichnishierarchiendurch?? in einer Verzeichnishierarchieetwas suchtBeistrich dass man aufsie haben ein Verzeichnisdarin liegen leicht DatendaDatennoch ein Verzeichnisvielleichtnoch ein Verzeichnisin dem Verzeichnis nicht noch ein Verzeichnisliegen noch Daten drindannum das zu durchsuchenbraucht man typischerweiseDatei aus dem Verzeichnisdas zu durchsuchen braucht man typischerweiseRekursionund zwarich sagedurchsuche dieses Verzeichniswas machte deine guckt sich alle Dateien anund für jedes Verzeichnisdas ?? findetsich die Funktion selbst wieder auf die Suche dieses Verzeichnismachte dasselbeund da durchsuche dieses Verzeichnis?? Rekursiondas ist die üblicheAnwendung für Rekursiondas und nichts anderesich schreibe eine Funktiondie ein Verzeichnis kriecht und das Verzeichnis auf oberster Ebene durchsuchtPunkt die beiden Dateien anund dann für jedes enthalteneVerzeichnisdie hiersich selbst wieder aufruftdas Verzeichnis durchsuchen das Verzeichnis durchsuchen und entweder automatisch absteigen bis in die tiefsten Tiefenund den ganzen Baum durchsuchtdas ist üblich an den für Rekursionhatte das ich eine Funktionselbst wieder aufdas hier programmiert kriege ich möchtemir sowas haben wie ein File eine eigene Funktion ist ?? gibtder ich ein neues Directory Info gebe?? mit der weiß wo er suchen soll?? finden kannPunkt hochüber den direktgenehmigtVerzeichnis von dem Projekt in dem ich gerade sitzebesseres einfälltsind ?? das da so reinkopierengibt's hier Schlangenlinienhabenalle hier versucht ein Sonderzeichenwechselzu bilden und die an Sonderzeichen BackslashBeistrich L zu bilden das ?? schwachsinniganAlternativeeine Alternative wäredass sie das Backslash verdoppeln den Wechsel verdoppelte sich komisch aus sie schafft davon ja jetzt davorzu sagen ich meine den Wegwörtlichoder sie schreiben siehst dann unterLinux aussieht ?? Schritt vorwärtsstrichenist Windows auchdas möcht ich aufrufen ich möchte sagen suchen eine Datei mit einer bestimmten Eigenschaftausgehend von diesem Verzeichnissind sie wozu das ?? Hintengutesdamit will ich sagenzehn Verzeichnisse tief nicht beliebig tief sind Verzeichnisse tiefdamit ich auch ?? Abbruchbedingung für meine Rekursion habe so Thermalfunktionvon außen verwendet werden die jetzt rekursivdieses Verzeichnis was angegeben ist durchläuftdas wird eine Methode meiner Klasse hier liefert nichts zurücksie hast offensichtlich ein Fallund vom Typ R kriecht sie eben einmal ein Directoryinfound sie kriegthinten eine ganze Zahlmal levelswie viele Ebenen die absteigen sollwie im Kohlebergwerkwie viele Datenes ohne Bergwerk untergehen soll?? nicht glatt bis zum Erdmittelpunktsodie Funktion soll jetzt das tun diese Methode soll das tun was ich eben angekündigthabedie solldas angegebeneVerzeichnisfragenwas in Dateien drin stehtdie Dateien durch guckenund dann gucken was an Verzeichnissendrin steht und für jedes Verzeichnissoll sich dann wieder selber aufokayder erste Schritt ist ich ?? erst mal alleDateien an die da drin stehenfor-each-Schleifeich Ihnen schon mal am Rande erklärt es eine nette Art wie man durch solche durch Kollektiongarnicht in der ich die Anzahl bestimmen und damit die Aufwärtszähnesind nicht richtig begann ausich möchtedas Directory fragen was denn alles an Dateien drin ist dasüberhaupt auchich möchte das direkte ?? fragen was alles an Dateien drin ist?? das Geld fallswas geht falls macht der Schweiz liefert Ihnen eine Sammlung ein Fallfür jede Datei die drin ist dies ein FileinfoFileinfo hatten wir eben benutztzum Beispielum die Länge festzustellenund eine Dateizu löschenwarGeldfallsdu den Aufruf sodieses Vorgehengeht nun jedes Fileinfo durch Wasser drin ist?? der klassischen for-SchleifeSchleife würden sie sich hiervon erst mal die Anzahl geben lassenund damit der Vorschlag von null bis zu dieser Anzahl minus eins durchgehenund den sonstigen der Auswahl sindgeschriebenfür jedesDing von dem passenden Typ warWeilerpassenbitteer für jedes Ding hier drinnen als jedes Fileinfowas dazu ?? kommst du folgendeswas möchte ich tunhaben das File Infowas zurück kommt das und so fehlteausgedachtich möchteprüfenob da einer dabei ist dessen Längedie richtige isterst seit dem längstKlassiker ?? genauso gucken ob der Name der richtige sieht man die Datei auf und drucken Wein und das richtige drin stehtund ob die auch am Freitag den dreizehnten erzeugt worden ist welche Bedingung sich Komma vorstellenes aber nur was du nach der Längeirgendwasgelänge ?? ich sucheweiß ich von meiner Datei bilanzieren istnämlich den jetzt maldrin damit das lustig ist hierwohlalsoHaar Beistrich keine die sich jetzt gleich eine kombinieren das Wissen plötzlicheingetreten die ändert sich natürlich alle kirchlicheich ?? seiner Verzeichnis Entschuldigungsich nicht das immer wenn ich das Kompilieren sollte nicht das eigene Projektverzeichnisin dem immersprachden Emigfahrzeugssollsoda irgend eine blödsinnige Dateiinden hierist dieeinunddreißigzwei fünf sechsangenommen ich wüsste vondieser Datei ihre Länge ist aber nicht wo sie steckt bitte hier sind von hoher ?? Punkt natürlich würde ich hier den Vergleich machenunddann einfach das ausgebenzum BeispielMessageboxMessage Box Showan den Namen dieser Datei ausgebenItem ist ja einFileinfojetzt also noch einmal haltenPunktdas wird jetzt passieren also der erste Teil von Feinfile ist folgendesergeht alle Dateien durch die in demVerzeichnis findetPunkt obeine der Dateien oder mehreredie richtige Länge haben und wenn das der Fall ist bitte den Namen aus alskleine Dialogboxdas ist der erste Teil der Aktion alle Dateien die da drin sind durchgehendund prüfender zweite Teil istalle Verzeichnissedurchgehenund sich für jedes Verzeichnis selbst wieder aufessei denn ich bin schon auf der untersten Sohle angekommendafür ist jetzt das Level das auch wirklich dann irgendwann abbrichtsicherheitshalberich stelle fest ob ich schon auf der untersten Sohle angekommen binoder nicht wenn ich noch nicht auf der untersten Sohle angekommen dennbei diesem Aufruf ihr nicht null bestanden hatdann gehe ich alle Verzeichnisse durchund ruf mich selbst auf für alle VerzeichnissewiederPagerageund jetzt gehe ichdiedirekte ?? ist durch jetzt wechseltder Direktor es lieferteine Sammlung an den Info zurück?? Methodenaufrufalle Directory sollen sich selbstprüfenauch mal was schreibe ich da unten jetzt reindie Funktion geht alle Dateien durch und ruft sich für jedes Directorydas dann gefunden und danachselber wieder aufhier stehtda drin welchesDirectory sie gerade gefunden hat jetzt Direktor ist die Liste von allenund hier gehe ich allen Direktors durcharbeitenist dasdirekt das heißt hier kommt Reiten reinund nun sage ichich bin jetzt eineneins tiefer abgestiegenbesagt nämlich dann nicht mehr levelssondern der bis minus einswird also bei jedem Abstieg um eins reduziertin siehe oben mit zehn anfangen haben sich immer noch neun acht und so weiter der zählt unter wie der ?? die Anzeige im Aufzugambisher ganz zum Schluss bei den sonstigen Aufruf hier bei Null angekommen ist und sich dann nicht mehrdiedirekte ?? Punkt das müsste jetzt ein theoretisch funktionierengespanntauf ein BildchenmalsehenSchwanBDP das war die Datei Audis mehrfachWettersatellit zweimal lernt man dabei beide Male diese sie dieselbe Größeals Sommer der noch ?? Arbeit als Arbeit zugucken der Funktionsseziermannträgt Punktbei der Ausgabeeiner die Datei mit der richtigen Länge Dinge gefunden hatsollte man anhalten dass man sieht was bisher passiert istdann sehen sich hier der AufruflistedieFunktionsmethodeBacken eins Klickhat FeinfileaufgerufenFeinfilehat van File aufgerufendie Erzfeind File aufgerufenund derzeit Fall aufgerufen ?? jetzt schon diesen Abstieg danebener mit der drei Initiative der drei Ebenen tiefnach dem Abstieg drei Ebenen tief sind wir da reingekommenEinfall beruft sich auf fünfzig auf fünfzig auf?? wieder zurück in ?? von Fuselfunktionaufgerufen worden an welcher Stelle da ist sie aufgerufen wordenund zwarmit levels achtund das ist von hier aufgerufen worden und zwar mit levels neun hundert hier aufgerufen worden mit levels sehen und dass es von hier aufgerufen wordenKomma schon kennensie können diese auf ?? Aufrufhierarchiedennoch wieder zurückverfolgenda drinnen war der Aufruf von dem der Aufruf von dem darin der Aufruf von dem Daten ist der Aufrufvon dem der dass sie zum Schluss ja bei den ?? Punkt gelandet ist so sinnig ?? auf Komma für den Zäpfchen einzeigt das nur für Dienstag scheintdas hier ist der Aufruf Stackdas ist die zuerst aufgerufenen Funktiondie geht in die Funktion rein geht in die Funktion eines glatten Feinfallgeht den Feindfall rein geht in Feinfall reindas sehen Siehier an dieser Stelle genau andersrum aufgelistethier oben ist die unterste Funktion diedieerste Funktiondie kleinste Funktion die ganz zuletzt aufgerufen worden ist das jetzt die darüber selbst darüber setztzu Beginn steht die Funktion sie zu aller erst aufgerufenwordenaufKomma die die Rekursionnachvollziehendas es ?? ganz typische Anwendung ?? sogar sagen das ist die typische Anwendung für Rekursion angehtBäumerekursiv durchwenn ich in der so zeige ist das ein Essen bisschengeflogen Komma das muss man nämlich Internet gar nicht zu Fuß machen in den meisten Fällenwarendie eingebauten Methoden sind derartgroßzügigdas ?? mit den schon meist erledigen kann?? dannbitte nämlich direkt zurück in Vorhabenihr das dieses?? wenn sie so einen DirektorinVorhaben?? Lücken Text nur als Randnotizkönnte das direkt Fragenmit einem ArbeitsfilesGottes Weg mit Nummer ?? fallsFragendas indirekte ?? ist zurück gibtdie bestimmte Bedingungen erfüllenda so könnt ihr zerschmettern vorgeben den Server ?? obschonkönnte das ehrlich sagen möge rekursiv suchen auch die Unterverzeichnissemit durchsuchenist hier schon eingebaut also neunundneunzig Prozent der Fälle kommen mit Nummer falls so wandertwenn sie aber wirklichbisschen?? sagenexklusive Anforderung haben Sie suchen alle Dateien dieser Längedie an einem Montagodergespeichert worden sindund die die Endung Punkt TXThabendann dürfen Sie zu Fußder Durchführung mit einer rekursivenKonstruktiondas hat nichts decken ?? Dateien zu tun was ich hier zeige aberes kommt extrem häufig bei Dateien vor der sie Rekursion ganzeVerzeichnisse durchokay das zur Arbeit mit Dateien und Verzeichnissen zu für sie sind die eingebauten Funktionen sind ganz nett an damit kommt manneunzig Prozent der Fälle zurande