2011-08-03 24 views
25

Tôi có một cấu trúc thư mục:Whats cách dễ nhất để đảm bảo thư mục tồn tại trước khi tôi thực hiện một File.Move là gì?

C: \ Temp [hoàn toàn trống rỗng]

Và tôi có một tập tin mà tôi muốn chuyển đến

C: \ Temp \ Thư mục1 \ MyFile.txt

Nếu tôi thực hiện tệp File.Move, tôi sẽ gặp lỗi khi nói rằng thư mục này không tồn tại.

Có # phương pháp C sẽ tạo ra tất cả các thư mục lên đến điểm đó vậy:

C: \ Temp \ folder1 \

?

+0

bạn không nên lưu trữ dữ liệu trong tạm thời. Sử dụng tốt hơn một số thư mục AppData của người dùng. – Karsten

Trả lời

48

Sử dụng System.IO.Directory.CreateDirectory

lưu ý addtional: Bạn không cần phải kiểm tra xem nó có tồn tại trước không. CreateDirectory sẽ làm điều đúng bất kể.

7
If Directory.Exists("somedir") 

Xem here để biết thêm thông tin.

Để tạo một thư mục nếu nó không tồn tại

Directory.CreateDirectory("path of dir"); 

Nó sẽ tạo ra tất cả dirs và subdirs, xem here

3

Bạn có thể sử dụng Directory.CreateDirectory() cho điều đó. Rõ ràng, nó tạo ra tất cả các thư mục trong đường dẫn.

Hãy nhớ rằng giữa thời gian bạn tạo thư mục và thời gian bạn di chuyển tệp, ai đó có thể đã xóa thư mục. Vì vậy, không có cách nào để chắc chắn rằng thư mục sẽ thực sự tồn tại khi bạn cố di chuyển tệp. Một ngoại lệ có thể là sử dụng filesystem transactions.

+0

Nhận xét của bạn về việc không thể hoàn toàn chắc chắn là sai. Bạn có thể kiểm tra xem nó có tồn tại hay không trước khi bạn làm bất cứ điều gì với thư mục. Xem xét các ứng dụng chạy nhanh hơn sau đó một con người có thể xóa một thư mục, và cung cấp cho bạn luôn luôn kiểm tra xem nếu thư mục tồn tại, thư mục sẽ luôn luôn ở đó. –

+4

Về mặt kỹ thuật, anh ấy đúng, có một tình trạng cuộc đua giữa séc và di chuyển. Trong thực tế, đây không phải là điều tôi sẽ lo lắng trong đơn của tôi vì nó sẽ là bên cạnh không thể gặp phải. –

+6

@Rahmound, nếu cái kia không phải là con người, nhưng một số ứng dụng khác thì sao? Ví dụ một trong đó làm sạch định kỳ thư mục Temp? – svick

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