Asynchrone Dateisuche nach Muster

C# Medium async

Aufgabe «Asynchrone Dateisuche nach Muster»

Schreiben Sie ein asynchrones Programm, das ein Stammverzeichnis und ein Dateinamensmuster (mit Unterstützung von '*' und '?') als Eingabe erhält. Das Programm soll asynchron und rekursiv alle Unterverzeichnisse durchsuchen, alle Dateien finden, die dem Muster entsprechen, und deren vollständige Pfade ausgeben. Für jede gefundene Datei müssen asynchron die ersten 1024 Bytes gelesen und deren SHA256-Hash (als Hexadezimalzeichenfolge) berechnet werden. Die Ausgabe muss nach dem Dateipfad sortiert sein. Einschränkungen: Die Anzahl der Dateien überschreitet 1000 nicht, die Verschachtelungstiefe beträgt bis zu 10, die Dateigröße kann beliebig sein, aber die ersten 1024 Bytes werden immer gelesen.

Eingabeformat

Erste Zeile: Stammverzeichnis (absoluter oder relativer Pfad). Zweite Zeile: Dateinamensmuster (kann '*' und '?' enthalten).

Ausgabeformat

Für jede gefundene Datei eine Zeile ausgeben: "<vollständiger Pfad> <SHA256-Hash der ersten 1024 Bytes>". Die Zeilen sind lexikografisch nach dem Pfad sortiert. Wenn die Datei leer ist, wird der Hash von einer leeren Zeichenfolge berechnet.

Beispiele

Beispiel 1

EINGABE
/tmp/testdir file?.dat
AUSGABE

Beispiel 2

EINGABE
Programming is fun
AUSGABE

Beispiel 3

EINGABE
3 1 2 3 4 5 6 7 8 9
AUSGABE

Beispiel 4

EINGABE
hello world world java
AUSGABE
main.cs