2010-09-12 41 views
48

Chỉ là một câu hỏi nhanh. Tôi đang sử dụng một cái gì đó như thế nàyFileStream và tạo thư mục

FileStream fs = new FileStream(fileName, FileMode.Create); 

Tôi đã tự hỏi liệu có một tham số tôi có thể chuyển cho nó để buộc nó tạo thư mục nếu nó không tồn tại hay không. Tại thời điểm này, ngoại lệ sẽ bị ném nếu không tìm thấy thư mục.

Nếu có phương pháp tốt hơn thì hãy sử dụng FileStream Tôi đang mở cho các ý tưởng.

Trả lời

97

Sử dụng Directory.CreateDirectory:

Directory.CreateDirectory Method (String)

Tạo tất cả các thư mục và thư mục con theo quy định của con đường.

Ví dụ:

string fileName = @"C:\Users\SomeUser\My Documents\Foo\Bar\Baz\text1.txt"; 

Directory.CreateDirectory(Path.GetDirectoryName(fileName)); 

using (FileStream fs = new FileStream(fileName, FileMode.Create)) 
{ 
    // ... 
} 

(Path.GetDirectoryName lợi nhuận phần thư mục của tên tập tin.)

+1

Giả sử tôi có/folder1/folder2/folder3/folder4/file.txt vì tên tệp và thư mục 1 không tồn tại. Điều trên sẽ tạo tất cả 4 thư mục. –

+0

@Ash Burlaczenko: Tôi vừa thử nghiệm nó và, vâng, đúng vậy. – dtb

+0

Điều gì sẽ xảy ra nếu thư mục đã tồn tại và bạn chạy dòng đó –

14

Cái gì như:

void EnsureFolder(string path) 
{ 
    string directoryName = Path.GetDirectoryName(path); 
    if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) 
    { 
     Directory.CreateDirectory(directoryName); 
    } 
} 
+1

Tại sao điều này rất ít được bình chọn, đó là một cách hay để kiểm tra và tạo thư mục. –

+0

@ChaitanyaGadkari có khả năng vì Directory.CreateDirectory không ném ngoại lệ nếu thư mục đã tồn tại; vì vậy câu trả lời của dtb ngắn gọn đối với hầu hết mọi người đối mặt với một vấn đề tương tự. – nullable

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