Ich stolperte gerade über ein undokumentiertes Verhalten der GetFiles
Methoden in System.IO.Directory
.Directory.GetFiles findet nicht existierende Dateien
Immer wenn die searchPattern
Parameter an die Methode übergeben enthalten ein Windows-reservierten Gerätenamen, wie "nul.*"
oder "aux.bmp"
, wobei das Verfahren ein Array mit dem Namen einer Datei enthält, nonexisting zurückgibt, wie C:\Users\ft1\nul
oder D:\aux
usw.
I frage mich, ob diese Gerätenamen eine besondere Bedeutung haben, wie "." oder "..", oder wenn das nur eine Art Bug ist. Wie auch immer, das scheint immer noch ziemlich seltsam zu sein. Zum Beispiel dieser Code-Schnipsel in C#:
string[] fileNames = Directory.GetFiles(@"C:\D:\..\..\...\", "con.txt");
foreach (string fileName in fileNames) Console.WriteLine(fileName);
druckt
C:\D:\..\..\...\con
Irgendwelche Hinweise?
Sie wissen Sie, wenn das .NET Framework jede eingebaute Liste solcher reservierten Namen hat? –
Das ist eine gute Frage, es wäre wahrscheinlich besser, das als eine tatsächliche SO Frage zu stellen, aber da die Frage [Wie prüfen, ob gegebener String legaler (zulässiger) Dateiname unter Windows ist?] (Http://stackoverflow.com/questions/62771/how-check-wenn-gegeben-string-is-legal-allowed-file-name-under-windows) ist bereits gefragt, ich gebe dir den Link. –
Vielen Dank Erik! –