2010-09-28 38 views
8

Trong cấu hình ứng dụng của tôi Tôi có đường dẫn, ví dụ: "logs \ updater \ updater.log"Tạo tệp từ đường dẫn, tạo thư mục con nếu chúng không tồn tại

Khởi động ứng dụng, tôi muốn tạo tập tin updater.log, tạo tất cả các thư mục con nếu chúng không tồn tại.

Vì vậy, nếu ngày mai người dùng của tôi thay đổi đường dẫn trong cấu hình thành "logs \ mypathisbetter \ updater.log", ứng dụng của tôi tiếp tục hoạt động, ghi nhật ký vào tệp mới.

File.Create, FileInfo.Create, Streamwriter.Create hoặc hơn thế: họ làm như vậy?

Hoặc tôi có cần kiểm tra xem các thư mục có tồn tại không?

Tôi không thể tìm thấy câu trả lời rõ ràng cho câu hỏi này trên mạng.

+0

http://msdn.microsoft.com/en-us/library/54a0at6s.aspx – skst

Trả lời

13

Giải Quyết sử dụng một chút mã:

private static void EnsureDirectoryExists(string filePath) 
{ 
    FileInfo fi = new FileInfo(filePath); 
    if (!fi.Directory.Exists) 
    { 
    System.IO.Directory.CreateDirectory(fi.DirectoryName); 
    } 
} 

Xin lỗi vì bài thực sự newbie này ... Cảm ơn tất cả các bạn! :-)

+0

Cách tiếp cận của bạn là biết ơn về việc modulising kịch bản –

9

Không, chúng dường như không - bạn sẽ nhận được một DirectoryNotFoundException, tôi tin rằng cả ba.

Trước tiên, bạn cần thực hiện một điều gì đó như một số Directory.CreateDirectory(path).

EDIT:

Đối với một nhiều hơn chút của một giải pháp đầy đủ mà bắt đầu với một đường dẫn bao gồm tên tập tin, hãy thử:

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

    TextWriter writer = new StreamWriter(fullPath); 
    writer.WriteLine("hello mum"); 
    writer.Close(); 

Nhưng hãy nhớ, bạn sẽ cần một số lỗi xử lý quá, để người viết luôn bị đóng (trong khối 'cuối cùng').

+0

Thực tế, tôi cũng đã thử. Có một "Phương pháp hay nhất" để thực hiện công việc đó? Một số ý tưởng? :-) –

+0

Tôi đã cập nhật câu trả lời của mình, điều đó có giúp ích gì không? –

+0

Giải Quyết sử dụng một chút mã: \t \t private static void CreateFile (string filepath) \t \t { \t \t \t FileInfo fi = new FileInfo (filepath); \t \t \t nếu \t \t \t { \t System.IO.Directory.CreateDirectory (fi.DirectoryName) (fi.Directory.Exists!); \t \t \t} \t \t} –

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