Mi sono appena imbattuto in un comportamento non documentato dei metodi GetFiles
in System.IO.Directory
.Directory.GetFiles trova file inesistenti
Ogni volta che il parametro searchPattern
passato al metodo contiene un nome di dispositivo Windows riservato, come ad esempio "nul.*"
o "aux.bmp"
, il metodo restituisce un array che contiene il nome di un file inesistente, come C:\Users\ft1\nul
o D:\aux
, ecc
I Mi chiedo se quei nomi dei dispositivi abbiano un significato speciale in quel contesto, come "." o "..", o se questa è solo una specie di bug. Ad ogni modo, sembra ancora piuttosto strano. Ad esempio, questo frammento di codice in C#:
string[] fileNames = Directory.GetFiles(@"C:\D:\..\..\...\", "con.txt");
foreach (string fileName in fileNames) Console.WriteLine(fileName);
stampe
C:\D:\..\..\...\con
Degli indizi?
Sapete se il .NET Framework ha alcuna lista built-in di tali nomi riservati? –
Questa è una buona domanda, probabilmente sarebbe meglio chiederla come una vera domanda SO, ma dato che la domanda [Come verificare se una determinata stringa è legale (permesso) nome file sotto Windows?] (Http://stackoverflow.com/questions/62771/how-check-if-given-string-is-legal-allowed-file-name-under-windows) è già stato chiesto, ti darò il link. –
Grazie mille Erik! –