2010-06-02 85 views
140

我有一段代碼在這裏,如果目錄不存在,打破:如果創建目錄不存在以創建文件,該如何創建目錄?

System.IO.File.WriteAllText(filePath, content); 

在一個行(或幾行),則可以檢查目錄通往新文件沒有按是否存在,如果沒有,在創建新文件之前創建它?

我正在使用.NET 3.5。

+0

的可能的複製[如果文件夾不存在,創建它(http://stackoverflow.com/questions/9065598/if-a-folder -does-not-exist-create-it) – 2016-11-28 03:05:49

回答

275

(new FileInfo(filePath)).Directory.Create()在寫入文件之前。

或者

System.IO.FileInfo file = new System.IO.FileInfo(filePath); 
file.Directory.Create(); // If the directory already exists, this method does nothing. 
System.IO.File.WriteAllText(file.FullName, content); 
+2

優雅的解決方案,因爲它處理需要創建嵌套文件夾的情況。 – 2017-05-08 20:57:34

-1

如果需要,您可以使用File.Exists來檢查文件是否存在並使用File.Create來創建它。確保您檢查是否有權在該位置創建文件。

一旦確定文件存在,您可以安全地寫入文件。儘管作爲一項預防措施,您應該將代碼放入try ... catch塊,並捕獲函數可能會引發的異常,如果事情沒有按計劃完成。

Additional information for basic file I/O concepts

+0

我最初誤讀了你想寫入一個可能不存在的文件的問題。儘管文件和目錄IO的概念基本相同。 – hitec 2010-06-02 06:24:29

82

您可以使用下面的代碼

DirectoryInfo di = Directory.CreateDirectory(path); 
+36

'Directory.CreateDirectory'完全符合你的要求:它創建目錄,如果它還不存在。 **沒有必要先做一個明確的檢查**。 – 2012-10-08 15:45:27

+4

如果'path'是文件而不是目錄,則拋出IOException。 https://msdn.microsoft.com/zh-cn/library/54a0at6s(v=vs.110).aspx – scaryman 2015-04-15 22:31:20

25

正如@hitec說,你要確保你有正確的權限,如果你這樣做,你可以使用這條線確保該目錄的存在:

Directory.CreateDirectory(Path.GetDirectoryName(filePath))

-1

var filePath = context.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["ErrorLogFile"]));

var file = new FileInfo(filePath);

file.Directory.Create();如果該目錄已經存在,這個方法不起作用。

var sw = new StreamWriter(filePath, true);

sw.WriteLine(Enter your message here);

sw.Close();