2010-09-28 77 views
8

在我的應用程序的配置,我的路徑,例如「日誌\更新\ updater.log」創建從路徑的文件,創建子目錄,如果他們不存在

啓動應用程序,我想創建文件updater.log,創建所有子文件夾(如果它們不存在)。因此,如果明天我的用戶將配置中的路徑更改爲「logs \ mypathisbetter \ updater.log」,我的應用程序將繼續工作,將日誌寫入新文件。

File.CreateFileInfo.CreateStreamwriter.Create左右:他們這樣做?

或者我需要檢查文件夾是否存在嗎?

我無法在網上找到明確的答案。

+0

http://msdn.microsoft.com/en-us/library/54a0at6s.aspx – skst 2013-01-02 21:41:56

回答

13

使用的代碼一點點解決:

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

對不起,這真的是新手帖子... 謝謝大家! :-)

+0

你的方法是模塊化腳本 – 2016-08-30 15:12:58

9

不,他們似乎沒有 - 你會得到一個DirectoryNotFoundException,我相信這三個。

您需要先做一件類似Directory.CreateDirectory(path)的事情。

編輯

對於多一點與包括文件名的路徑開始的完整的解決方案,請嘗試:

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

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

但是記住,你需要一些錯誤處理過,所以作家總是被關閉(在'finally'塊中)。

+0

其實我也試過。 有一個「最佳實踐」來完成這項工作? 有些想法? :-) – 2010-09-28 16:02:16

+0

我更新了答案,這有幫助嗎? – 2010-09-28 16:19:30

+0

使用的代碼一點點解決: \t \t私有靜態無效的CreateFile(字符串文件路徑) \t \t { \t \t \t FileInfo的FI =新的FileInfo(文件路徑); \t \t \t如果 \t \t \t { \t System.IO.Directory.CreateDirectory(fi.DirectoryName)(fi.Directory.Exists!); \t \t \t} \t \t} – 2010-09-28 16:26:32

相關問題