我只是偶然發現了System.IO.Directory
中GetFiles
方法的無證行爲。Directory.GetFiles找到不存在的文件
每當傳遞給該方法的searchPattern
參數包含一個保留Windows設備名稱,如"nul.*"
或"aux.bmp"
,該方法返回包含一個不存在的文件的名稱的數組,像C:\Users\ft1\nul
或D:\aux
等
我不知道這些設備名稱是否具有特殊含義,如「。」。或「..」,或者這只是一種錯誤。無論如何,這仍然看起來很奇怪。 例如,這個代碼片段在C#:
string[] fileNames = Directory.GetFiles(@"C:\D:\..\..\...\", "con.txt");
foreach (string fileName in fileNames) Console.WriteLine(fileName);
打印
C:\D:\..\..\...\con
任何線索?
你知道,如果.NET Framework中有這樣的保留名稱的任何內置列表? –
這是一個很好的問題,它可能會更好地問作爲一個實際的SO問題,但因爲問題[如何檢查給定的字符串是合法的(允許)在Windows下的文件名?](http://stackoverflow.com/questions/62771/how-check-if-given-string-is-legal-allowed-file-name-under-windows)已經被問到了,我會給你鏈接。 –
非常感謝Erik! –