2009-08-24 3 views
15

Tôi không thể giải quyết vấn đề này. Tôi có thể tạo một tệp với File.Create ... File.CrateText và cứ tiếp tục như vậy, chỉ khi đường dẫn tồn tại. Nếu nó không phải là tập tin chúng tôi sẽ không viết và trả về một lỗi. Làm cách nào để tạo đường dẫn?Tạo Tệp mà Đường dẫn không tồn tại?

+1

có thể trùng lặp của [Làm thế nào để tạo nhiều thư mục từ một đường dẫn đầy đủ trong C#?] (http://stackoverflow.com/questions/2134392/how-to-create-multiple -directories-from-a-single-full-path-in-c) –

Trả lời

29

Hãy thử

Directory.CreateDirectory("C:\MyApp\MySubDir\Data") 

http://www.devx.com/vb2themax/Tip/18678

+0

Vì bài đăng này có khả năng giải quyết vấn đề của bạn ở đây thông tin MSDN bổ sung: http://msdn.microsoft.com/en-us/library/as2f1fez.aspx – Bdiem

+1

Và làm cách nào để kiểm tra xem đường dẫn có tồn tại không? hoặc chúng ta chỉ gọi hàm này. –

+9

ĐỌC! MSDN nói: Nếu thư mục đã tồn tại, CreateDirectory không làm gì cả. – Bdiem

4

Bạn sẽ cần phải tạo ra các thư mục đầu tiên. Nó sẽ tạo tất cả các thư mục con không tồn tại trong đường dẫn bạn gửi. Đó là một chức năng khá mạnh mẽ.

Directory.CreateDirectory(filePath); 

Nếu bạn không biết liệu thư mục có tồn tại hay không bạn có thể sử dụng Directory.Exists. Nhưng không phải cho trường hợp này vì nó sẽ là vô nghĩa. MSDN nói rằng CreateDirectory không làm gì nếu thư mục hiện đang tồn tại. Nhưng nếu bạn muốn kiểm tra sự tồn tại của thư mục vì lý do khác, bạn có thể sử dụng:

if(Directory.Exists(folder) == false) 
    { 
    //do stuff 
    } 
1
Directory.CreateDirectory("path"); 
10

Cho rằng bạn đã đường dẫn đầy đủ (Folder + File name), các mã sau đây sẽ đảm bảo mục yêu cầu của bạn con đường tồn tại (nếu nó không tồn tại)

 FileInfo fileInfo = new FileInfo(fileFullPath); 

     if (!fileInfo.Exists) 
      Directory.CreateDirectory(fileInfo.Directory.FullName); 


     //create the file ... 
1

dưới đây cũng nên làm việc

FileInfo fileInfo = new FileInfo(fileFullPath); 
    if (!fileInfo.Directory.Exists) fileInfo.Directory.Create() 

làm việc trên thư mục của fileinfo, chứ không phải là lớp thư mục tĩnh