簡體   English   中英

C#代碼未創建目錄或保存文件

[英]C# code not creating directory or saving file

我正在制作一個Outlook插件,它將在收到郵件時自動將郵件保存到文件服務器。 這部分代碼根本不執行要求的操作!

//RelevantDirectory[0] is the root folder where I want to save stuff, and sits on a mapped network drive where I have full admin permissions.

System.IO.Directory.CreateDirectory(RelevantDirectory[0] + "\\Email Correspondence\\");
System.IO.Directory.CreateDirectory(RelevantDirectory[0] + "\\Email Correspondence\\Outgoing");

mail.SaveAs(RelevantDirectory[0] + "\\Email Correspondence\\Outgoing\\" + mail.SenderName + " - " + string.Format("text-{0:yyyy-MM-dd_hh-mm-ss-tt}", mail.ReceivedTime) + ".msg");
System.Windows.Forms.MessageBox.Show(System.IO.File.Exists(RelevantDirectory[0] + "\\Email Correspondence\\Outgoing\\" + mail.SenderName + " - " + string.Format("text-{0:yyyy-MM-dd_hh-mm-ss-tt}", mail.ReceivedTime) + ".msg").ToString()); //returns True!

MessageBox返回True,但該文件實際上不存在! CreateDirectory代碼也不會創建目錄-並且我確定程序中的文件路徑正確。 我從此鏈接中了解到,這可能與文件系統虛擬化有關。 如果是這樣,我該如何解決該問題?

還有一點是,如果我將mail.SaveAs指向Desktop文件夾,它將保存它。

編輯出於某種奇怪的原因,使用Path.Combine()工作。 歸功於Sinatr。 謝謝大家的提示。

問題出在行中:

string.Format("text-{0:yyyy-MM-dd_hh-mm-ss-tt}", mail.ReceivedTime)

當轉換為字符串時,它變得像:1/1/2014 12:35:35 PM創建文件時,“ /”和“:”是非法字符,因此,為使更改量最小,建議您在以下位置附加幾個Replace函數字符串的結尾。格式如下:

string.Format("text-{0:yyyy-MM-dd_hh-mm-ss-tt}", mail.ReceivedTime).Replace('/','-').Replace(':',' ')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM