Tôi vừa tình cờ gặp một hành vi không có giấy tờ của các phương pháp GetFiles
trong System.IO.Directory
.Directory.GetFiles tìm các tệp không tồn tại
Bất cứ khi nào các tham số searchPattern
truyền cho phương pháp này có chứa một tên thiết bị Windows dành riêng, chẳng hạn như "nul.*"
hoặc "aux.bmp"
, phương thức trả về một mảng chứa tên của một tập tin nonexisting, như C:\Users\ft1\nul
hoặc D:\aux
vv
tôi tự hỏi liệu những tên thiết bị đó có ý nghĩa đặc biệt trong bối cảnh đó, như "." hoặc ".." hoặc nếu đây chỉ là một loại lỗi. Dù sao, điều đó vẫn có vẻ khá lạ. Ví dụ, đoạn mã này trong C#:
string[] fileNames = Directory.GetFiles(@"C:\D:\..\..\...\", "con.txt");
foreach (string fileName in fileNames) Console.WriteLine(fileName);
in
C:\D:\..\..\...\con
Bất kỳ manh mối?
Bạn có biết nếu .NET Framework có bất kỳ built-in danh sách tên reserved như vậy? –
Đó là một câu hỏi hay, có thể sẽ tốt hơn nếu bạn hỏi đó là câu hỏi SO thực tế, nhưng vì câu hỏi [Kiểm tra xem chuỗi đã cho là tên tệp hợp pháp (được phép) trong Windows?] (Http://stackoverflow.com/question/62771/how-check-if-given-string-là-hợp pháp-cho phép-file-name-under-windows) đã được yêu cầu, tôi sẽ cung cấp cho bạn liên kết. –
Cảm ơn bạn rất nhiều Erik! –