[Playlisten] [Impressum und Datenschutzerklärung]

07B.2 Text in großer Datei suchen; Streams; Teil 1


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

vonmorgen steht mir vor einer Dateizu verarztendie sehr groß sein darf sehr lang sein darf und zwar so zu verheizen das sich nach einer bestimmten vorgegebenen Zeichenkettesuchewar witzig wo steht die ZeichenketteABCin einer monströslangen Dateidas mit Datei strömendiese Dateien niemals insgesamt einlesensoll immer nur stückweise einlesenund dann gucken ob mandie vorgegebene Zeichenkette findet oder nichtsals eine Art wie man dannsehr große Dateien durchsuchen kanndieFunktionvorschwebtimmer Info dazwischenso eine Funktiondie soll heißenKomma sowas sucheDateiendas Projekt schon so genanntdie kriegtden Pfad und den Dateinamenund die kriegt die Zeichenkettenach der gesucht werden sollan welchen Stellen denn was gefunden worden istinsRay André von inwendig sagen sehrgroße Dateien was müsste man sich jetzt eigentlich auch noch überlegenich eben Internet zurückhinaus kann das indes den zu klein ist eine sehr große Datei in der zum Dateisystemab wo ist das jeweilige Dateisystemam Endedannzwei Gigabyte ist heute ja eigentlichnirgendwo mehr ein Problemals Dateilänge unseres ?? ganz länger werdenBeistrich mein Kind ein Problem dender indes beizweiMilliarden am Endedas man ihn stehen jenseits von zwei Gigabyte vierzehn Menschen bisschenabsurd aber sowas muss man sich dann überlegen reichte Interso und hier drinsteht jetzt irgendwie sinnvoll weiter Punkt sie machen mein Stream wieder aufund überlegen sichwie man das jetzt veranstaltenkannsollte eine Sache sagenwas wir von demFramework geschenkt kriegen wennsie eine Zeichenkettehabenkönnen Siediese Zeichenkettezumindest als solche durchsuche nicht die ganze Datei aber zumindest die Zeichenkette als solche durchsuchenzum BeispielHammer daDax auf ?? gibt's hiersogar Index auf Andy Komma weit reicht es mal Index auf ?? sagenwonach sie suchen ab wound so weiter und so weiter also die Zeichenkettenhaben für sich schon ?? Suchfunktion eingebautKomma wir verwendenvon seltsamem Streamreaderwie das aussieht dieser Teil wird mal zu öffnenwie würde man die durchgehendeRamadan Funktionalso wennich davon ausgehe dass diese Datei nicht über Gigabyte groß ist sondern dass sie halbwegs vernünftig zu verarbeitenwäredann nehmen wir sowas wie File Vita Lionssetztedort zwei OrofileMonitor Lionsoder wie toll Text sowas wäre dann gut dann ist das ist das komplett in den Speicher reinund alles geht in einem und das ist dann einfach wenn es in den Speicher passt aber?? hätte gerne dann Dateien die arg groß sind deshalb eben das mit denStrömenChips funktionieren ja so ähnlich wiebei Hermes was ich bin abgewickeltes Tonband und darauf Editionenschreib Lese Kopf dass es mein schreib Lese Kopf das ist das abgebildete Tonbandderzeitigen Schreiblese Kopfüber das Tonband bewegen typischerweiseschrittweisevorwärts bewegenund schreiben oder lesenich gucke mir immer nureinen winzigen Ausschnitt an den Zerfall ein einziges Byte anniemals die gesamte Dateihabe ich keinen Ärgermit zu wenig Speicherplatzdie erste Geschichte des gesundenDatenstrom einzurichtenund es gibt das schon recht gut verpacktmit dem Stream wiederwie letztes Malwardannauchein neunzehn wieder einrichtenfür diese Dateiwobei ich erwarte das Dateinamenwirklich den kompletten Pfad auf undzwar ??FormKlammer zu für solche zu machen freundlicherweisees müsste noch das Exceptions Geschichtenverhandelnmir geht's gerade mehr Kundinnenund Systems als und Exceptionsbeschreibt Magnete zu TodoExceptionskeine schöne Art würde sofort machenund das erstmalige dann sage okay die Datei öffnen wiralles klarmachen dass man die von vorne bis hinten durch ?? durchgehenkannund da mal wieder zuund jetztzähle ich nicht direkt mit ich schreibe keine for-SchleifehinweilSinn von der von der denke Herrist daskeine for-Schleife ich gehe nicht vonAnfang bis Ende in soundsovielSchritten durch sondern von der denke ?? ist das while-Schleifeso lange wie ich nicht am Ende binich weiterdie ganz harte Schiene ist das Dateien ja sogar geschrieben werden können werden sie gelesen werdenwenn sie hier vorne anfangen zu lesensehr ganzheitlichevon Anfang zu lesen kann sein dass sie hinten immer noch geschrieben werden wenn sie kleinere Länge fragenByte Länge noch ganz bestimmt istsowas bitte auch irgend ein Video mal vorinsofern möchte ich ungern nach der Länge fragendas wäre nicht im Sinne desErfinders von den Zwillingssondern ich möchtemit einer Waldschleifeso lange arbeitenbis sich am Ende binund das machen sie diese Wahl schleifenalso so lange wie ich nichtsam Ende bin?? das Ende noch nicht erreicht haben tun ?? wasich mit dem for-Schleife über die Anzahlsiehtdie Anzeige an mach einfach bis sich hintenam Ende bin und eines gutdannkommt der spannende Teil was mache ich denn eigentlichkann diverse Sachen einlesenoder diverseLeute sagenStücke in diverser Größe einlesengucken was sie alles habenkönnen Sie zum Beispieldieschon mal voraus schauen ob da noch was ist oder was da ist vor allen Dingenmit rietdas manMitglied können Sie sagenhier ist ein FAZeichenfür dieses Gerät insoweit wie's gehtmit Riedblockpasstepraktisch genauso aus ein großer UnterschiedMitglied sein das hat mir letztes Mal schon malgelesen genau eine Zeile eingenau eine Zeile und mit Witz zu Enzder Name sagtliest man alles ein bis zum Ende der Zeichenkettezurückalso für uns wird sich sicherlich dann irgendwas hier werden von wegenwie Tom an den Puffer angibtna ihr wollt den Puffer angebeund sageab welcher Stellewie viele Zeichen maximalenPuffer geschrieben werden oder ihr Blogsehensieht verdächtig ähnlich ausVerzeichnisseswiegt gerade mal in Aktiondiese Variante ihr der Mann einenPuffer gibt ich brauche also einen Pufferbauimmer direkter vorBäuchen jedes Mal neu aus alsoich brauch ein Puffer von Zeichenhundertdie passen garantiert in den Speicher reinund nun kann ich sagendiesemehrmals in diesem Puffer einab dem Index nullund probier mal tatsächlich hundert ein zuuntersagen Probleme nur zwei vierzig einzulesen das wäre auf einesind unsinnigund dieses Schwyz gibt mir noch zurück wie viele den ?? tatsächlich eingelesen worden sindFeste der kann keine hundert ?? einlesenjetzt kein Absturz sondern erließen ebenso viele ein Bier einlesen kann und sag mir eben vor allen Dingenals Rückgabewertwie viele denn auch wirklich eingewiesen worden sindAnzahlgelesen Beistrichso sieht das dann ausdas anders als letztes Mal dieVitleinfunktiondie immer doppelte Zeile einliesthier gehe ich jetzt sozusagen hunderter Schritten durch den hundert Buchstaben schrittenim hundert Buchstaben hier in dieses Gerät ein großesman andas müsse die Funktion normal aufrufen Punktwirimmer Rückgabewertsofalschschon mal aufin?? istDateieine Teilnahmeeinfach hierden Kant auf den Desktop gelegtzum Internetam?? dannhart codiert hierohne irgendwelche Dateidialogesodas wäredervolle Pfad zur Dateiinklusive Dateinamewird suche ich irgendwasin dieser Dateiarbeitsebenedurch noch lange nichtfestKommaob wahrscheinlichdas ?? Bestandteile vor Kommasoall das nur um diese ?? zu mal auf zurufen dass sie sehen was nun passiertwas passiert die Funktion wurde aufgerufender Stream Lieder ist aufgemacht?? ist offensichtlich noch nicht am Ende Industrie des Fallsan diesem Puffer angelegten Wunderzeichenjetzt entweder vor dem Stream wieder zu sagen nun lese mal hundert Zeichen einmaximalhundert Zeichen ein schaffst hundert Zeichen einzulesenab der Stelle null in unserem Pufferzurück ?? wie du gelesen hast in Anzahl ZeichenAnzahl Zeichen sind ein hunderteine Frage des Buches lang genugund in den Puffersteht jetzt ebenZeichen für Zeichender Anfang vom Buch drinund natürlichdie Nummer zurück dieZeilenumbrücheund so weiter sind Intelligenz ausgestattetsein ich Zeile um Zeile eingelesen sonderndiese Mietfunktionließ Zeichenfür Zeichen ein ganz klein hat einen wave Und-Zeichenund das kann man jetzt weiter betreibt manweiter und so weiterwieder hundert gelesenunten stehenden Pufferandere Geschichtenbis ans Ende kommenund dann kommt es wahrscheinlich verwundert sondern eben was am letztenEndeüber istnach dem man ein Vielfaches von hundertgelesen hatsosieht das ausder Job wäre nundiese Zeichenkettezu findenund Suchtextsie könnten ganz dreistdas Wasser im Puffer steht nach der Zeichenkette durchsuchenKomma damit mal anodergeradeerst ?? Komma dann mal andas es noch nicht hundert prozentig das wahrestellte sich vordasstündein den Puffer drindas letzte Zeichen im Puffer ist das Adie Sowjets im Puffer nach der Zeichenkette ABCwill sie nicht ergänzen ?? nadannladen Sie die nächsten hundert Zeichensuchen in diesem Puffer von hundert Zeichen nach der Zeichenkette ABCfinden Sie nicht erhitzen und PCmuss in bisschen raffinierter drangehenhabe er auf dem Wege ich glaube das ganz schlecht auf dem Wege fünfmal so anVersuchen zum herauszufindenob in diesem Pufferdie Sonderzeichendann zumindest der Suchtext enthaltenwie könnte man das feststellenzu Sand-IDSbei den Zahlen gab's doch sowas Paaresgebeihr ein Zeichenketteeinhundert zweiundvierzigund kriege eineganze Zahl raussowas analoges bei Zeichenkettenweiß ich noch viel einfacher weil die habe ich ja schon ?? Liste Anzeichenmuss er nicht großartig am ?? umgewandelt werden ist es meiner anderen Formfür nochnach einer Funktionsteilder Klasse String istPunkt ganzin Punkt irgendwasgibt'serstaunlich wenigeine Funktiondie Teil der Klasse String istsogar eine statische Funktionnächtlicher Teil der Klassedie Hammer noch nicht es gibt noch keine ZeichenketteSie haben noch nichts eine statische Funktion?? habe nichtswas wäre verwandtkönnte ich noch guckenwashat ähnlichenähnlichen Job die statische Funktion statische Methodenbei der Klasse Stringist es einfacher als man glaubtein Constraktoraufruferzeuge eine neue Zeichenkettein der Formkönnte angucken was haben wir allesinsbesonderekönnen Sie sagen aus einem Array von Zeichen erzeugt eine neue Zeichenkettesie den einfachenPufferaus dieserListe Klammer zu will aus dieser Liste von Zeichenerzeuge bitte ein Zeichenketteeffizienter Weise die Tastaturstellt immer gerade fest wo denn in dieser Zeichenkettehier der SuchtextPunktZeichenkettehabePunkt kann ich sagenim Netz auf was wir habendie Erde doch gutda sage ich jetzt also wovon dennvon welcher Zeichenkettedie Position gesucht wird und dass unsere JugendlicheSuchtextIndex auf Suchtextdamit suche ich jetzt nur ein einziges Vorkommenindiesen hundert Zeichen vom Pufferaber es ist ein erster Schrittherauskommtdie Stelle in den Pufferder schönendas kommt rausdas es da nicht was ich haben willich mir nicht sicher Hunderte hundert Zeichen seine Stelle innerhalb der Gesamtdateiaberdas was manchmal sosein erster Einstiegnichts gemacht werdendannund neunsoll all das zum Schluss zusammen gesammelt werden alle von diesen Fundstellensollen zusammen gesammelt werdenhier unten dann zurückgegebenwerdenKomma damit an daswäre die richtige Art dann einzusteigenversuchen Sie es mal alle diese Fundstellen zusammen zu sammelnunter unten zurückzugebensich als Aroma gesagt das es natürlich jetzt noch alles haarsträubend falsch war der Suchtext kannam Ende der hundert Zeichen anfangen und am Anfang aufhören und ich finde nicht der Suchtext mehrfach vorkommen dass es alles nochnicht fertigähm ?? Diesel erstmals umdas einsammeln zu haben?? einsammelnbrauchen wirklarerweiseeinen Liste keine selber mit ?? müssen sie vorher sagen wie lang es ist Sie müssen aber vor gelangt es istalso brauchen Sie eine Listemit Dreharbeiten wärewie zu alten Zeiten wirklich mit andere arbeitenwürdeund die zwei Durchgänge im ersten Durchgang zählen sie viel Treffer sindnur zählendann legen Sie das Ryanund Manni noch mal Durchgang und für das FAdas wäre die einzige Art wie man das macht aber wir haben Zwischenlistedick anwachseneine Liste von ganzen Zahlen natürlichFragenstellen Punkt es warStelle Puffer hier wird dann also derListe der Fundstellenzugefügtvorselber aus und wenn wir fertig sind die mir nicht mehr niemalszurücksonderndass sie den nicht ganz funktionierenich möchte ja die Liste anIndices zurückgebenist ein ins möchte ich zurückgebenhabe ermacht uns leider geht das so nicht es ist eine Listebistin spitzen Klammern Internet keinezwei paar SchuheListe kann viel mehr als das Rayaus der Liste wird nicht automatisch eine ?? aber sie können sagen??naturae netterweisekönnen die Liste in einen ?? verwandelndes eingebautenFunktion die eine Listegezielter Maschinchen zu einem einfacheren Maschinchensieht das so aus ?? versteigertfunktionieren würde ist natürlich noch alles gelogenweil innerhalb Sonderzeichenden Text mehrfach vorkommen kann oder ganz geschnüffelt worden seinund jetzt dann anaber im Prinzip müsste ich jetzt schon durch Datei durchkommenund vielleicht schon den einen oder anderenFund haben mal sehen?? mal weg Punkt auf den Aufrufwas passiertder Aufrufauchokaydases offensichtlichnoch nicht ganz im Sinne des Erfindersminus eins minus eins minus eins minus einsinda gibt's ?? nochmals zu bereinigenwas ist da passiertwas fehlt jetzt eigentlich nochin diesem ?? stehen minus einsPreis in der Liste Fundstellen stehen jedes einzelnenwas ist ?? Liste Fundstellen reingeschrieben wordenStelle Puffer es reingeschrieben wordenund die mir seit daherIndex Office schuldNix Off schreibt minus einzelreinwas soll das bedeutendieser Weise widersinnig in so kurz Dokudas Aufklappendie Klinik des ersten Vorkommens anaber was passierte das Zeichen nicht vorkommt was sollen dann tun bitte wenn das Zeichen gar nicht vorkommt oder diese Zeichenkette hier nicht vorkommtIntimus die Funktion Index auf ihnen sagen hallo habe ich nichtselbst entwerfen aber das ein bisschen heftiget cetera minus eins zurück was ist Beistrichwenn es nicht da es vom minus eins unddannsonst immer dafür dass das jetzt vernünftig funktioniertsoweit zumindest also nicht die doppelten vorkommen und so weiter aber das ist ?? minus eins Jahr richtig behandelt wirdeinfach Punkt minus eins zurück minus ein zurück kommt dannoffensichtlich nichts gefundenund wennwas anderes als minus ein zurück sollte man sinnvollerweise schreiben größer gleich NullPunktwenn was anderes zurückkommtals minus eins dann weiß ich auch etwas gefundenund merken dasdas tun Beistrichwie gesagt es ist immer noch nicht fertig doppelte Fundstellen und so weiteraufgesplittet ?? alles nicht zu habenKomma lautet etwas besser geworden istund Sohn aufrufenokay nur noch dreizehn Einträgendas FA das Gitter schon besseres fängt allmählich an plausibel zu werdenjetzt sehen Sie den Ärgerdas natürlich nichtdie Zeichen ab Beginn der Datei gezählt werden Sonderzeichenab Beginn des jeweiligen Puffers gezählt werden ?? null heißt direkt am Anfang des Puffers geradeeinmal gefüllt worden istwas weiß ich wo das ist das trillionste Zeichen oder das milliardste Zeichenam?? das Merkmal als nächstes sorgen Sie dafür dass sie jetzt die richtigen Zahlen stehennicht bezogen auf den Puffer der Anfang des Puffer sondern bezogen auf die Gesamtdateizum Umsatz mitzählenman könnte mitzählenwie oft diesesLied aufgerufen wird und dann mal hundert nehmen das fühlt sich für mich so bisschen unsicher anes gibt einenschöneren Weg weil das Gittersachverzeichnisgelesen hat das muss einfachspeichern hier mitzählenwie Verzeichnisgelesen hatman also eine VariableUnd-ZeichenPuffer Anfang groß von Wortauf Englisch für das ?? seitAnfangsodarin möchte ich mir jetzt das eben merken was die Nummer des Zeichens amAnfang des Puffers istder möchte das findet sich dazuin der Formwenn ich schondrei Puffer vorher gefühlt habe sollte ?? gefälligst auf drei hundert stehenund dann kommt nochzwoundvierzig dazudieser Arthier oben nicht Pufferwurde Zeichen ist daserste die die Nummer null ist das erste Zeichenpufferarbeitsloserwissen wie viele Puffer ich denn schon vor ein gelesen habewie viele Zeichens warendas fliege ich jetzt nach simsen aufpassen wenn man hier direktnach dem einlesendasdiese variabelgeht das schiefwarum geht dasgenau einfach am Beispielwenn sofort das erste Zeichen eine Fundstelle istdiese hundert ZeichenNummerzeichen Pufferanfangwird auf hundert gestellt hierund hier gebe ich dann hundert plus null zurückals Fundstelle hundert plus nullist nicht so der Knüllerdie Fundstelle soll Null sein und ich hundert plus nur ich muss hierist die Nummer des Puffer Anfang muss ich spätererhöhenfür den nächsten Durchgang muss ich mir das merkenhier habe ichalles so wie's war und für die nächsten Durchgangmuss ich dann drauf addieren wir für dich beim letzten ein gelesen habe so müsste das jetzt allmählich funktionierenmal sehen ob sie um plausibler Zahlen kriegenda wird allmählich ein Schuh draus?? hätte im Text mal nachsehenob das so hinhaut undsojetzt geht's aber dieses fiese Problem oder zwei fiese Problemezählen nichtwenn es mehrere Treffer in einem Puffer gibt'sund ich zähle nicht wenn der Suchtext abgeschnitten wird dass es fiesdas circa mir passierender Puffer enthält nurein Fragmentvon den Suchtextdas kann mir passierenund es kann mir passierenPuffer ist länger gewordenwenn es damit passiert es der Puffermehrere von diesen Texten enthältoder sogar ein ganzund ein abgeschnittenund darfdas muss natürlich funktioniertdas muss behandelt werden Komma dermaßensonst kann ich mit dieser Funktion nichts anfangenerbrochenes in Wien raffinierte Strategiekann man sich darausden mehrfachen Fundstellenwenn das ist was im Puffer stehtPunkt wenn ich einmalABC gefunden habekann ich ja ganz was folgendes tun ?? ich schneide dieses ABCwegund baue einen neuen Pufferetwas über bisschen länger ist ?? vergleichbar gucken und suche ab da neuals ich schneide das gefundene weg und fange da an zu suchen?? noch mal neu zu suchenund dann hat man auch ?? Chance des abgeschnittenenzu behandelndass das Ding einfach immernoch Stückchen weiter wachsenin der Hoffnung dass dann kein Ärger mit den abgeschnittenen passiert das gebaut nochgesegelt aber das wäre das allererstefür sie mehrfachen Fundstellenversuchen Sie das mal zu kriegen dass sie den Pufferabschneidennach dem SuchtextAbschneidenund dann noch mal suchen natürlichePufferbrutale Lösung dies dann auch nicht sein wird ein erster Schritt ist die brutale Lösung wäre dochhier weiß ich ich habe was gefundenja was gefunden in der Zeichenkette esjetzt könnt ich sagen okay das erste was ich gefunden habe lass ich doch mal weg selbst ??sagen mirmal irgendwas aban dieser Stellevon dieser Längevon der Zeichenkettedas ist unseresoll wieder unsere Zeichenkette sein und ?? dasselbe noch malin der Formund so weiter und so weiterwar das natürliches Ungeschick geschriebenwenn ich was gefunden habeschneide ich ab an der Stellesuche dem Rest nicht etwas gefunden habe um sich wieder abschneiden und so weiter und so weiter das wird ihr ungeschicktmüsste man diese dasvernünftig formulierenkann es jetzt einige tausend Gässchen schreibenmöchte so lange abschneidenbis ich nichts mehr findehier somit das Garland Gips ganz ja nicht bringenwenn das der Puffer istich finde das erste ABCokay das schneide ich ab nun so jetzt in den Westen finnischer Knochen ABCdas schneide ich absuche in dem Rest der finnischer Knochen ABCals Endziel Engländer muss ein Ende haben aber wie Philips schreibe ich den dann ineinander das wäre total nervig das möchte ich mit Iris mache dich miteinander schreibenaber noch in ABC das schneide ich ab und so weiterdas muss irgend eine Waldschleife wieder werdenund dergrößte Trickist wahrscheinlich nicht morgen in fünf Minuten der größte Trick wird sein diese while-Schleife mit dieser Wahlschleifen zu vereinengucke ob in dem aktuellenBlog den ich eingelesenhabeob da der Suchtextvorkommtwenn ja schneide ich das abhänge Facetten bisschen was dranhineinNSS sechzehnten was dran und das mache ich so langenicht am Ende wird haltich für diese ganzen Hilfs mit dem weiter oben zusammen pflegeneins bringenund in gesunde globale Strategiestellendiesehundert Zeichen ein aus der Dateiich guckeob ABC vorkommtwenn jaschneidig das abaus der Zeichenkette die ich bis dahin gespeichert habeundlade noch bisschen mehr ?? gucken wie viel mehr man sich jetzt zu Laden traut wahrscheinlich so das das auch wieder hundert Zeichen sindwird es jetzt raffiniert an fängt hat man auch den Ärger mit dem Abschneidenwerden durch dieses ein Stück Kölnhabe ich hierwas abgeschnitten war es nun nicht mehr abgeschnittendas müsste man richtig anfangennoch hinkriegen kannmüssteals ich oben diese Bedingung vorsichtigein wenig ausBeistrich denn dazu was einoder was machen Sie mit den ganzen Variablen die hier vorkommensind sie irgend welche Chancenman da anfangen kannvielleicht noch maldann als Vorbereitung für das was Mitarbeiter geht in vier hundert Zeichen eingelesenhabeund gesucht istvon mir aus ABCdie ZeichenketteABCich gucke auch in den hundert Zeichen den ersten hundert ich eingelesenhabe ABC vorkommtamFreitag ?? mit dem Fall an das ABC nicht vorkommt sie finden in diesem hundert Zeichenkein ABCwie können sie dann weitermachengenau dann könnte immer noch hier AHBstehen das heißtsie vergessen allesbis auf die zwei letzten die Länge von den minus eins sie vergessen alles bis auf die zwei letztenund lesen dann weiter eindann hätte man den Fall erledigtdaskein mal ABC gefunden worden istund wenn sie ABC findenirgendwowas machen Sie dannja also hier das eben Gesagte schneiden ab hier können Sie Abstand bis dahin alle ignorierenund jetzt kann man ja bei mir ein diesmal wieder viele hundert einlesen weitere auch nur so viele einlesen das man wieder insgesamt drei hundert istes das ganze nichtüber Borden viel wirdalso müsstediesen Vergleich machengelesen?? Leerzeichen ein und guckenhaben wirunsere Zeichenkette drin oder nicht je nachdem hängt davon ab was man danach dann tut aber das müsste relativ überschaubar bleibenund das wirdlustigerweisedannin dieses weil irgendwie alles eingebaut werden müssensodass man hier dann auch gar nichts unverständliches verschachtelte Seefahrt