System.IO.Directory.GetFiles



  • private const string C_PATTERN  = "BLA_????.ZIP";
    string[] Files = System.IO.Directory.GetFiles(Path, C_PATTERN);
    

    Kann ich das Ersatzzeichen "?" so nicht benutzen?
    In meinem Programm wirkt sich "BLA_????.ZIP" so aus, wie "BLA_*.ZIP".



  • Kann es sein, dass BLA_????.ZIP alle Dateinamen im 8.3-Format matcht?



  • Hallo,

    Da diese Methode Dateinamen mit dem Dateinamenformat 8.3 und dem langen Dateinamenformat überprüft, werden beim Suchmuster "*1*.txt" möglicherweise unerwartete Dateinamen zurückgegeben. Beim Suchmuster "*1*.txt" wird z. B. "longfilename.txt" zurückgegeben, da das entsprechende 8.3-Dateinamenformat "LONGFI~1.TXT" lautet.

    MfG,

    Probe-Nutzer



  • Das 8.3 Format hatte ich nicht im Sinn...

    Was mich bewegt ist, dass die Win-API FindFirstFile() an der Stelle des
    Fragezeichens "?" ein beliebiges Zeichen mit der Länge von einem Byte
    einsetzt und für das Mult "*****" eben beliebig viele Zeichen.

    Die Suche mit "bla_????.zip" filtert alle Dateien, die maximal 8 Zeichen
    (ohne Extension) lang sein müssten. Die genannte C# Funktion liefert jedoch
    das Ergebnis, was unter der Win-API FindFirstFile() mit "bla_*.zip" erzielt wird.

    Beispiel:

    Suche "bla_????.zip" mit Win-API FindFirstFile():
    - bla_0001.zip
    - bla_0002.zip
    - ...
    - bla_0010.zip

    Suche "bla_????.zip" mit der genannten C# Funktion:
    - bla_0001.zip
    - bla_0002.zip
    - ...
    - bla_0010.zip
    - bla_0010 (Kopie).zip ???!!!

    Gibt es eventuell das "?" mit der o.g. C# Funktion nicht
    oder muss ich eine andere Syntax nehmen? 😕

    Übrigens: Ich benutzt VS 2005 Prof. .NET2.
    (Vielleicht gibt es ein Unterschied zu anderen Versionen?)



  • Einfach nochmal den Beitrag 2 über mir lesen und verstehen.

    Tipp: Aus "bla_0010 (Kopie).zip" wird im 8.3 Format sowas wie "bla_00~1.zip" und das matcht wunderbar mit dem Pattern "bla_????.zi". 😉



  • Das Resultat der ganzen Sache ist dann also offenbar,
    dass man bei Portierungen aus anderen Sprachen,
    doch sehr aufpassen muss. Das ist ja typisch MS.


Anmelden zum Antworten