Tôi không thể tìm thấy bất kỳ thông tin nào về vấn đề này thông qua giáo sư Google, vì vậy, tôi ở đây. Lấy tên đường dẫn đã cho và dán nó vào Windows Explorer. Tôi tình cờ gặp vấn đề này sau khi phát hiện lỗi trong mã của tôi đã tạo ra các đường dẫn có thêm '.' trong tên đường dẫn trước khi phân cách thư mục \
...Hành vi lạ từ .NET về đường dẫn tệp
@"C:\\pathto.\file.ext"
Trong mã, .NET sẽ chấp nhận con đường khi gọi File.Create
và một tập tin sẽ được tạo ra, nhưng con đường này:
@"C:\\pathto\file.ext"
Sao chép C:\\pathto.\file.ext
vào thanh địa chỉ của Windows Explorer và xem '.' biến mất và đưa bạn đến C:\\pathto\file.ext
Có hành vi bình thường đối với .NET và Windows không gây ra sự cố vì '.' đang bị loại bỏ bởi cả .NET và Windows khi được truyền vào các hoạt động tập tin. Vấn đề thực sự là tất cả các tệp trong DB đều có tên tệp có dấu '. \', Nhưng tồn tại trong đường dẫn không có '. \' ... và File.Exists()
cũng vậy, mặc dù đường dẫn không phải là 'thực' vị trí thực tế ...
Điều gì đang xảy ra ở đây?
Trước tiên, bạn có thể làm cho nó dễ dàng hơn để sao chép và dán đường dẫn bằng cách sử dụng, ví dụ. Định dạng '@" C: \ Users \ Matt "' (một 'chuỗi chữ nguyên văn'). –
Có thể Windows cấm tên tập tin (và thư mục) bắt đầu hoặc kết thúc bằng '.'? –
Có điều này là bình thường. Thử tạo thư mục kết thúc bằng một điểm dừng hoàn toàn sẽ không thay đổi. – TheKingDave