2014-09-22 32 views
5

Tôi có chức năng tự động tạo Path được chỉ định bằng cách xác định xem String Path có phải là File hoặc Directory hay không.Làm cách nào để kiểm tra xem đường dẫn chuỗi có phải là 'Tệp' hay 'Thư mục' nếu đường dẫn không tồn tại?

Thông thường, tôi sẽ sử dụng này nếu con đường đã exists:

FileAttributes attributes = File.GetAttributes("//Path"); 

if ((attributes & FileAttributes.Directory) == FileAttributes.Directory) 
    { 
     Directory.CreateDirectory("//Path"); 
    } 

Nhưng nếu nó không? Cách kiểm tra xem String Path có phải là File hoặc Directory nếu không tồn tại không?

+1

'File.Exists' và' Directory.Exists' –

+2

Bạn muốn kiểm tra cái gì đó thậm chí không tồn tại? Nếu bạn muốn kiểm tra xem một tên đã cho có phải là tên tệp hợp lệ hay không, bạn có thể chỉ cần kiểm tra xem nó có phần mở rộng hay không, nếu không thì đó có thể là một thư mục. – HimBromBeere

+0

@MetroSmurf Nghiêm túc? "Làm thế nào để kiểm tra xem đường dẫn là một tập tin hoặc thư mục nếu nó không tồn tại?" – Rawling

Trả lời

5

Nếu tệp trong kịch bản của bạn phải có phần mở rộng thì bạn có thể sử dụng phương pháp này.

LƯU Ý: Điều này là hợp pháp trong cửa sổ để có thời gian trong thư mục, nhưng điều này chủ yếu được giới thiệu cho khả năng tương thích hệ điều hành chéo của tệp. Trong môi trường cửa sổ nghiêm ngặt nó được coi là hình thức xấu để có các tập tin mà không có phần mở rộng hoặc để đặt thời gian hoặc không gian trong tên thư mục. Nếu bạn không cần tính đến kịch bản đó thì bạn có thể sử dụng phương thức này. Nếu không, bạn sẽ phải có một số loại cờ được gửi qua chuỗi hoặc cấu trúc để xác định ý định của chuỗi.

var ext = System.IO.Path.GetExtension(strPath); 
if(ext == String.Empty) 
{ 
    //Its a path 
} 

Nếu bạn không cần phải làm bất cứ phân tích về loại tập tin bạn có thể đi đơn giản như:

if(System.IO.Path.HasExtension(strPath)) 
{ 
    //It is a file 
} 
+2

Một sửa đổi nhỏ là 'Boolean Extention = System.IO.Path.HasExtension ("// Path") ' – Enumy

+3

+0: Lưu ý: trong khi cách tiếp cận này có thể làm việc cho OP nó là sai: không có hạn chế về tên thư mục không bao gồm dấu chấm. Nó là hoàn toàn ok để có thư mục có tên "MyImages.jpg" hoặc "Game.Saves". –

+0

Tôi nghĩ rằng tôi đã làm rõ điều đó trong câu trả lời của tôi. – Carter

Các vấn đề liên quan